设计模式
设计模式分为创建型模式、结构型模式和行为型模式。
创建型模式:创建对象。
结构型模式:把复杂结构分解为多个类,分解的是类本身(包括算法和属性)。
行为型模式:把复杂算法分解到多个类,分解的是算法。
UML
示例代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74
| public class MediatorPattern { public static void main(String[] args) { Mediator mediator = new ConcreteMediator(); Colleague colleague1 = new ConcreteColleague1(); Colleague colleague2 = new ConcreteColleague2(); mediator.register(colleague1); mediator.register(colleague2); colleague1.send(); colleague2.send(); } }
abstract class Mediator { public abstract void register(Colleague colleague); public abstract void relay(Colleague colleague); }
class ConcreteMediator extends Mediator { private List<Colleague> colleagues = new ArrayList<>();
@Override public void register(Colleague colleague) { if (!colleagues.contains(colleague)) { colleagues.add(colleague); colleague.setMediator(this); } }
@Override public void relay(Colleague colleague) { for (Colleague c : colleagues) { if (!c.equals(colleague)) { c.receive(); } } } }
abstract class Colleague { protected Mediator mediator;
public void setMediator(Mediator mediator) { this.mediator = mediator; }
public abstract void send(); public abstract void receive(); }
class ConcreteColleague1 extends Colleague { @Override public void send() { System.out.println("ConcreteColleague1 send"); mediator.relay(this); }
@Override public void receive() { System.out.println("ConcreteColleague1 receive"); } }
class ConcreteColleague2 extends Colleague { @Override public void send() { System.out.println("ConcreteColleague2 send"); mediator.relay(this); }
@Override public void receive() { System.out.println("ConcreteColleague2 receive"); } }
|