设计模式 之 中介者模式

释放双眼,带上耳机,听听看~!

 

下载 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捐助),没钱捧个人场,谢谢各位。

设计模式 之 中介者模式设计模式 之 中介者模式设计模式 之 中介者模式

谢谢您的赞助,我会做的更好!

 

 

给TA打赏
共{{data.count}}人
人已打赏
安全运维

基于spring boot和mongodb打造一套完整的权限架构(五)【集成用户模块、菜单模块、角色模块】

2021-12-11 11:36:11

安全运维

Ubuntu上NFS的安装配置

2021-12-19 17:36:11

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索