下载 23种设计模式源码 :
http://download.csdn.net/download/knight_black_bob/8936043
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
创建型模式,共五种:
工厂方法模式 抽象工厂模式单例模式建造者模式原型模式
结构型模式,共七种:
适配器模式 装饰器模式 代理模式 外观模式 桥接模式组合模式享元模式
行为型模式,共十一种:
策略模式 模板方法模式观察者模式迭代子模式责任链模式命令模式
备忘录模式状态模式 访问者模式中介者模式 解释器模式
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
1
2
3
4
5
6
7
8
9
10
11
12
13
14 1package 设计模式.中介者模式;
2/**
3 * @author baoyou E-mail:curiousby@163.com
4 * @version 创建时间:2015年7月9日 下午3:41:11
5 * 类说明:
6 */
7public abstract class Agent {
8
9 public abstract void action(Person sender);
10 public abstract void addPerson(Person person);
11
12}
13
14
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 1package 设计模式.中介者模式;
2
3import java.util.ArrayList;
4import java.util.List;
5
6/**
7 * @author baoyou E-mail:curiousby@163.com
8 * @version 创建时间:2015年7月24日 上午10:28:06
9 * des:
10 */
11public class ConcreteMediator extends Agent {
12
13 private List<Person> list = new ArrayList<Person>();
14
15 @Override
16 public void action(Person sender) {
17 String msg = sender.getMsg();
18 for (Person p: list) {
19 if(! sender.equals(p)){
20 if (sender.getAuthority()==1) {
21 sender.sendMsg(sender,p);
22 } else{
23 if (p.getAuthority()==1) {
24 sender.sendMsg(sender,p);
25 }
26 }
27 }
28 }
29 }
30
31 @Override
32 public void addPerson(Person person) {
33 list.add(person);
34 }
35
36}
37
38
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 1package 设计模式.中介者模式;
2/**
3 * @author baoyou E-mail:curiousby@163.com
4 * @version 创建时间:2015年7月9日 下午3:38:27
5 * 类说明:
6 */
7public abstract class Person {
8
9 private String name;
10 private int authority;
11 private Agent agent;
12 private String msg;
13 public int getAuthority() {
14 return authority;
15 }
16 public void setAuthority(int authority) {
17 this.authority = authority;
18 }
19 public String getName() {
20 return name;
21 }
22 public void setName(String name) {
23 this.name = name;
24 }
25 public Agent getAgent() {
26 return agent;
27 }
28 public Person(Agent agent) {
29 this.agent = agent;
30 }
31 public String getMsg() {
32 return msg;
33 }
34 public void setMsg(String msg) {
35 this.msg = msg;
36 }
37
38
39 public abstract void sendMsg(Person self ,Person other);
40
41 public void sendMsg(String msg){
42 this.msg = msg;
43 this.agent.action(this);
44 }
45}
46
47
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 1package 设计模式.中介者模式;
2/**
3 * @author baoyou E-mail:curiousby@163.com
4 * @version 创建时间:2015年7月9日 下午3:39:39
5 * 类说明:
6 */
7public class LandlordWomen extends Person{
8
9 public String name ="房东" ;
10 public LandlordWomen(Agent agent) {
11 super(agent);
12 setName(name);
13 setAuthority(1);
14 }
15
16
17 @Override
18 public void sendMsg(Person self, Person other) {
19 System.out.println( self.getName() +" 对 " +other.getName()+" 说 " + getMsg() );
20
21 }
22
23
24}
25
26
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 1package 设计模式.中介者模式;
2/**
3 * @author baoyou E-mail:curiousby@163.com
4 * @version 创建时间:2015年7月9日 下午3:40:26
5 * 类说明:
6 */
7public class RenterBoy extends Person{
8
9 public String name ="小明" ;
10
11 public RenterBoy(Agent agent) {
12 super(agent);
13 setName(name);
14 setAuthority(0);
15 }
16
17
18
19 @Override
20 public void sendMsg(Person self, Person other) {
21 System.out.println( self.getName() +" 对 " +other.getName()+" 说 " + getMsg() );
22 }
23
24}
25
26
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 1package 设计模式.中介者模式;
2/**
3 * @author baoyou E-mail:curiousby@163.com
4 * @version 创建时间:2015年7月9日 下午3:40:26
5 * 类说明:
6 */
7public class RenterGirl extends Person{
8
9 public String name ="小红" ;
10
11 public RenterGirl(Agent agent) {
12 super(agent);
13 setName(name);
14 setAuthority(0);
15 }
16
17 @Override
18 public void sendMsg(Person self, Person other) {
19 System.out.println( self.getName() +" 对 " +other.getName()+" 说 " + getMsg() );
20 }
21
22}
23
24
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 1package 设计模式.中介者模式;
2/**
3 * @author baoyou E-mail:curiousby@163.com
4 * @version 创建时间:2015年7月9日 下午2:01:34
5 * 类说明:
6 */
7public class MediatorTest {
8
9 public static void main(String[] args) {
10 Agent agent = new ConcreteMediator();
11
12 Person xiaoming = new RenterBoy(agent);
13 Person xiaohong = new RenterGirl(agent);
14 Person fangdong = new LandlordWomen(agent);
15
16 agent.addPerson(fangdong);
17 agent.addPerson(xiaoming);
18 agent.addPerson(xiaohong);
19
20 fangdong.sendMsg("我要出租 一间卧室");
21 xiaohong.sendMsg("我想我可以花费 500 元 出租 ");
22 xiaoming.sendMsg("我想我可以花费 450 元 出租");
23 fangdong.sendMsg("我出租给小红了");
24
25 }
26}
27
28
捐助开发者
在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(右上角的爱心标志,支持支付宝和PayPal捐助),没钱捧个人场,谢谢各位。
谢谢您的赞助,我会做的更好!