设计模式整理笔记2

策略模式


public class Run {


public interface IStractgy {
public void doCmd();
}


public class A implements IStractgy {


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


}


}


public class B implements IStractgy {




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


}


}


public class C implements IStractgy {


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


}


}


public class Invoker  {
private IStractgy stractgy;
public void setStractgy(IStractgy stractgy){
this.stractgy = stractgy;
}

public void execute(){
this.stractgy.doCmd();
}
}


public static void main(String[] args) {
Run run = new Run();
IStractgy a = run.new A();
IStractgy b = run.new B();
IStractgy c = run.new C();
Invoker invoker = run.new Invoker();
invoker.setStractgy(a);
invoker.execute();
invoker.setStractgy(b);
invoker.execute();
invoker.setStractgy(c);
invoker.execute();
}


}

装饰模式


public class Run {


public abstract class IView{
public abstract void getInfo();
}

public class AView extends IView{


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

}

}


public class Decorator extends IView{
private IView view;

private Decorator(IView view){
this.view = view;
}


@Override
public void getInfo() {
// TODO Auto-generated method stub
this.view.getInfo();
}

}

public class ADecorator extends Decorator{

private ADecorator(IView view){
super(view);
}

public void getDecoratorInfo(){

}


@Override
public void getInfo() {
// TODO Auto-generated method stub
this.getDecoratorInfo();
super.getInfo();
}
}

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

IView view = run.new AView();
view = run.new Decorator(view);
view.getInfo();
}


}

责任链模式:


命令模式:

public class Run {


public enum Type{
A,B,C
}

public class Request{
Type type ;
public void setType(Type type){
this.type = type;
}
public Type getType(){
return this.type;
}


}

public abstract class Handler{
Type type ;
private Handler next;
Handler(Type type){
this.type = type;
}
public void setNext(Handler next){
this.next = next;
}

public void handleRequest(Request request){
if(request.getType()==this.type){
//
}else if(this.next!=null){
this.next.handleRequest(request);
}else{
//
}
}
}

public class A extends Handler{


A(Type type) {
super(type);
// TODO Auto-generated constructor stub
}

}


public class B extends Handler{


B(Type type) {
super(type);
// TODO Auto-generated constructor stub
}

}


public class C extends Handler{


C(Type type) {
super(type);
// TODO Auto-generated constructor stub
}

}

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

A a = run.new A(Type.A);
B b = run.new B(Type.B);
C c = run.new C(Type.C);
a.setNext(b);
b.setNext(c);

Request r1 = run.new Request();
r1.setType(Type.A);
a.handleRequest(r1);
r1.setType(Type.B);
a.handleRequest(r1);
r1.setType(Type.C);
a.handleRequest(r1);
}


}

public class Run {


public abstract class AbstractGroup{
public abstract void find();
public abstract void change();
public abstract void delete();
public abstract  void confim();
}
public class GroupA extends AbstractGroup{


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

}


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

}


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

}


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

}

}



public class GroupB extends AbstractGroup{


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

}


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

}


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

}


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

}

}
public class GroupC extends AbstractGroup{


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

}


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

}


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

}


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

}

}
public abstract class AbastractCmd{
protected GroupA a = new GroupA();
protected GroupB b =new GroupB();
protected GroupC c = new GroupC();
public abstract void doCmd();



public class ChangeCmd extends AbastractCmd{


@Override
public void doCmd() {
// TODO Auto-generated method stub
a.find();
b.change();
c.confim();
}

}

public class DeleteCmd extends AbastractCmd{


@Override
public void doCmd() {
// TODO Auto-generated method stub
a.find();
b.delete();
c.confim();
}

}

public class Invoker{
AbastractCmd cmd;
public void execute(AbastractCmd cmd){
cmd.doCmd();
}


public static void main(String[] args) {
Run run = new Run(); 
Invoker invoker = run.new Invoker();
ChangeCmd change = run.new ChangeCmd();
invoker.execute(change);
DeleteCmd delete = run.new DeleteCmd();
invoker.execute(delete);



}


}

中介者模式:多方关系 解耦

public class Run {


public interface IDo {
public void doA();


public void doB();


public void doC();
}


public abstract class AbstractMediator {
public abstract void execute(int group, int cmd);
}


public abstract class AbstractPerson {
public AbstractMediator mediator;


public AbstractPerson(AbstractMediator mediator) {
this.mediator = mediator;
}
}


public class A extends AbstractPerson {


public A(AbstractMediator mediator) {
super(mediator);
// TODO Auto-generated constructor stub
}


public void doA(int cmd) {
mediator.execute(0, cmd);
}


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

}


}


public class B extends AbstractPerson {


public B(AbstractMediator mediator) {
super(mediator);
// TODO Auto-generated constructor stub
}


public void doB(int cmd) {
mediator.execute(1, cmd);
}


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

}


public int getCount() {
// TODO Auto-generated method stub
return 10;
}


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

}


}


public class C extends AbstractPerson {


public int getState;


public C(AbstractMediator mediator) {
super(mediator);
// TODO Auto-generated constructor stub
}


public void doC(int cmd) {
mediator.execute(2, cmd);
}


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

}


}


public class Mediator extends AbstractMediator implements IDo {
private A a;
private B b;
private C c;


public Mediator() {
a = new A(this);
b = new B(this);
c = new C(this);
}


@Override
public void execute(int group, int cmd) {
// TODO Auto-generated method stub
switch (group) {
case 0:
doA();
break;
case 1:
doB();
break;
case 2:
doC();
break;
default:
break;
}
}


public void doA() {
// TODO Auto-generated method stub
if(c.getState==1){
b.increase();
}else{

}
}


public void doB() {
// TODO Auto-generated method stub
if(b.getCount()>0){
b.decrease();
}
}


public void doC() {
// TODO Auto-generated method stub
a.refluse();
c.off();
}


}


public static void main(String[] args) {
Run run = new Run(); 
Mediator mediator =run.new Mediator();
A a = run.new A(mediator);
a.doA(1);
C c = run.new C(mediator);
c.doC(1);


B b = run.new B(mediator);
b.doB(10);

}


}

猜你喜欢

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