下载 23种设计模式源码 :http://download.csdn.net/download/knight_black_bob/8936043
创建型模式,共五种:
工厂方法模式 抽象工厂模式 单例模式 建造者模式 原型模式
结构型模式,共七种:
适配器模式 装饰器模式 代理模式 外观模式 桥接模式 组合模式 享元模式
行为型模式,共十一种:
策略模式 模板方法模式 观察者模式 迭代子模式 责任链模式 命令模式
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 List<Person> list = new ArrayList<Person>();
@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捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!