23种设计模式源码 :
创建型模式,共五种: 结构型模式,共七种: 行为型模式,共十一种:
package 设计模式.中介者模式;/** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年7月9日 下午3:41:11 * 类说明: */public abstract class Agent { public abstract void action(Person sender); public abstract void addPerson(Person person);}
package 设计模式.中介者模式;import java.util.ArrayList;import java.util.List;/** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年7月24日 上午10:28:06 * des: */public class ConcreteMediator extends Agent { private Listlist = new ArrayList (); @Override public void action(Person sender) { String msg = sender.getMsg(); for (Person p: list) { if(! sender.equals(p)){ if (sender.getAuthority()==1) { sender.sendMsg(sender,p); } else{ if (p.getAuthority()==1) { sender.sendMsg(sender,p); } } } } } @Override public void addPerson(Person person) { list.add(person); }}
package 设计模式.中介者模式;/** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年7月9日 下午3:38:27 * 类说明: */public abstract class Person { private String name; private int authority; private Agent agent; private String msg; public int getAuthority() { return authority; } public void setAuthority(int authority) { this.authority = authority; } public String getName() { return name; } public void setName(String name) { this.name = name; } public Agent getAgent() { return agent; } public Person(Agent agent) { this.agent = agent; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public abstract void sendMsg(Person self ,Person other); public void sendMsg(String msg){ this.msg = msg; this.agent.action(this); } }
package 设计模式.中介者模式;/** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年7月9日 下午3:39:39 * 类说明: */public class LandlordWomen extends Person{ public String name ="房东" ; public LandlordWomen(Agent agent) { super(agent); setName(name); setAuthority(1); } @Override public void sendMsg(Person self, Person other) { System.out.println( self.getName() +" 对 " +other.getName()+" 说 " + getMsg() ); } }
package 设计模式.中介者模式;/** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年7月9日 下午3:40:26 * 类说明: */public class RenterBoy extends Person{ public String name ="小明" ; public RenterBoy(Agent agent) { super(agent); setName(name); setAuthority(0); } @Override public void sendMsg(Person self, Person other) { System.out.println( self.getName() +" 对 " +other.getName()+" 说 " + getMsg() ); }}
package 设计模式.中介者模式;/** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年7月9日 下午3:40:26 * 类说明: */public class RenterGirl extends Person{ public String name ="小红" ; public RenterGirl(Agent agent) { super(agent); setName(name); setAuthority(0); } @Override public void sendMsg(Person self, Person other) { System.out.println( self.getName() +" 对 " +other.getName()+" 说 " + getMsg() ); }}
package 设计模式.中介者模式;/** * @author baoyou E-mail:curiousby@163.com * @version 创建时间:2015年7月9日 下午2:01:34 * 类说明: */public class MediatorTest { public static void main(String[] args) { Agent agent = new ConcreteMediator(); Person xiaoming = new RenterBoy(agent); Person xiaohong = new RenterGirl(agent); Person fangdong = new LandlordWomen(agent); agent.addPerson(fangdong); agent.addPerson(xiaoming); agent.addPerson(xiaohong); fangdong.sendMsg("我要出租 一间卧室"); xiaohong.sendMsg("我想我可以花费 500 元 出租 "); xiaoming.sendMsg("我想我可以花费 450 元 出租"); fangdong.sendMsg("我出租给小红了"); }}
捐助开发者
在兴趣的驱动下,写一个免费
的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。