设计模式整理笔记

桥梁模式:


import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
import java.util.function.Consumer;


public class Run {


public interface IProduct{
public void create();
}

public abstract class AbsFactory{
IProduct product;
public AbsFactory(IProduct product){
this.product = product;
}
public void createProduct(){
this.product.create();
}
}

public class Car implements IProduct{


public void create() {
// TODO Auto-generated method stub

}

}



public class Phone implements IProduct{


public void create() {
// TODO Auto-generated method stub

}

}



public class Factory extends AbsFactory{


public Factory(IProduct product) {
super(product);
// TODO Auto-generated constructor stub
}

}

public static void main(String[] args) {
Run run = new Run();
Car car = run.new Car();
Factory f = run.new Factory(car);
f.createProduct();
//转行
Phone phone = run.new Phone();
Factory f1 = run.new Factory(phone);
f1.createProduct();
}


}


享元模式:

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
import java.util.function.Consumer;


public class Run {


public class SignInfo{


private String key;


public SignInfo(String key) {
// TODO Auto-generated constructor stub
this.key = key;
}

}

 

public class SignInfoFactory{
HashMap<String, SignInfo> pool = new HashMap<String, SignInfo>();

public SignInfo getInfo(String key){
SignInfo info =null;
if(!pool.containsKey(key)){
info = new SignInfo(key);
pool.put(key, info);
}else{
info = pool.get(key);
}
return info ;
}

public void init(){
for(int i=0;i<4;i++){
String detail = "des "+i;
for(int j=0;j<10;j++){
String key = detail+ " res "+j;
getInfo(key);
}
}
}
}

public static void main(String[] args) {
Run run = new Run();
SignInfoFactory f = run.new SignInfoFactory();
f.init();
String key = "des "+1+ " res "+2;
//直接从对象池中取
f.getInfo(key);
}


}

状态模式:


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
import java.util.function.Consumer;


public class Run {


public abstract class State{
abstract void start();
abstract void run();
abstract void stop();
}
public class StartState extends State {


@Override
void start() {
// TODO Auto-generated method stub

}


@Override
void run() {
// TODO Auto-generated method stub

}


@Override
void stop() {
// TODO Auto-generated method stub

}
}

public class RunState extends State {


@Override
void start() {
// TODO Auto-generated method stub

}


@Override
void run() {
// TODO Auto-generated method stub

}


@Override
void stop() {
// TODO Auto-generated method stub

}
}

public class StopState extends State {


@Override
void start() {
// TODO Auto-generated method stub

}


@Override
void run() {
// TODO Auto-generated method stub

}


@Override
void stop() {
// TODO Auto-generated method stub

}
}

public class StateManager   {
private State state;


public State getState() {
return state;
}


public void setState(State state) {
this.state = state;
}

}



public static void main(String[] args) {
Run run = new Run();
   
}


}

备忘录:


import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
import java.util.function.Consumer;


public class Run {


public class Memento {
int state;


public int getState() {
return state;
}


public void setState(int state) {
this.state = state;
}


}


public class MementoManager{
Memento  memento;


public Memento getMemento() {
return memento;
}


public void setMemento(Memento memento) {
this.memento = memento;
}

}

public class Robot{
int state;
public int getState() {
return state;
}


public void setState(int state) {
this.state = state;
}

public Memento createMemento(){
return new Memento();
}

public void restoreMemento(Memento memento){
this.setState(memento.getState());
}

}

public static void main(String[] args) {
Run run = new Run();
    Robot robot = run.new Robot();
    MementoManager mg = run.new MementoManager();
    robot.setState(1);
    mg.setMemento(robot.createMemento());
    robot.setState(2);
    robot.setState(3);
    
    //robot error
    
    robot.restoreMemento(mg.getMemento());
    //
    robot.setState(4);
}


}

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Observable;
import java.util.Observer;
import java.util.function.Consumer;


public class Run {


public interface IProject{
public String getInfo();
}

public class ProjectIterator implements Iterator{


private List<IProject> list = new ArrayList<IProject>(); 
public ProjectIterator(List<IProject> list2) {
// TODO Auto-generated constructor stub
this.list = list2;
}


public void forEachRemaining(Consumer arg0) {
// TODO Auto-generated method stub

}


public boolean hasNext() {
// TODO Auto-generated method stub

return false;
}


public Object next() {
// TODO Auto-generated method stub
return null;
}


public void remove() {
// TODO Auto-generated method stub

}

}

public class A implements IProject{


private List<IProject> list = new ArrayList<IProject>();

public void addProject(IProject pro){
list.add(pro);
}
public String getInfo() {
// TODO Auto-generated method stub
return "";
}

public ProjectIterator getIterator(){
return new ProjectIterator(list);
}

}



public static void main(String[] args) {
Run run = new Run();
A a = run.new A();
A b = run.new A();


a.addProject(a);
a.addProject(b);
ProjectIterator iterator = a.getIterator();
while(iterator.hasNext()){

}
}


}

猜你喜欢

转载自blog.csdn.net/zdy10326621/article/details/79689449
今日推荐