【筹划模式-举动型】调停者模式

[复制链接]
发表于 2025-11-4 06:38:32 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
一、什么是调停者模式

        接下来是调停者模式,还是谁人思绪,我们从经典影戏中来举个例子吧,下面有请调停者大家-----《款项帝国》中的 徐乐功(梁家辉扮演)。该片是讲诉香港廉政公署创建前,黑社会及警员之间的一些幕后生意业务。此中有一个情结英国政府派出得力干将决定整治香港乱象,这个经典台词就是在老外上任第一天的景象。来上台词
《款项帝国》-徐乐功经典台词:
        “乐哥,我听说那老外很拽啊!”

        “呵呵,我家的狗旺财也很拽呀,它见人就咬就是不咬我!为什么?我养它嘛~哈哈”

        “喂,毕竟谁人老外他是收钱还是不收钱?”

        “我如今不敢问!”

        “会有猫不吃鱼嘛?恩?我没当探长的时间,掩护费都是乱收的。全香港警员都可以收钱,每条街上有几十家地下赌场和倡寮,天天打架,破案率低的吓死人!自从我认识了猪油仔,我们俩一起订立规矩,同一收钱。局长收三成,我们这些探长收两成,别的全香港的警员分享三成半,限定每条街地下倡寮和赌场的数目,让全部妓女都招到客,地下赌场都有买卖做,那些流氓有钱赚就不会打架咯!我们的破案率是有史以来最高的!我就不信这个老外敢粉碎规矩。假如再搞到天天砍人,尸横遍野的时间,我看他怎么负这个责!”
        这句台词充实体现了徐乐功作为调停者的脚色,他通过重新分配资源和订定规则,维持了“香港警界和黑社会的秩序”。这种模式不光镌汰了内部的杂乱和辩论,还进步了团体的服从和稳固性,调停者模式是一种举动型筹划模式,通过引入一个调停者对象来会合处理处罚一组对象之间的交互。这种模式的目的是镌汰对象之间的直接通讯。
二、为什么使用调停者模式


  •         复杂的交互关系:在影戏中,香港警界和黑社会之间存在着复杂的优点关系和频仍的交互。假如没有一个同一的和谐者,这些关系很轻易变得杂乱,导致内部辩论和服从低下。
  •         会合管理:徐乐功通过订定规则和重新分配资源,会合管理了警界和黑社会的交互。这种会合管理的方式使得复杂的交互关系变得有序,镌汰了直接的辩论和杂乱。
  •         动态变革的交互:当外部情况发生变革(如新的探长上任)时,徐乐功可以通过调解规则和资源分配来应对变革,而不必要改变整个体系的布局。
  •         简化对象关系:调停者模式将多对多的交互关系转化为一对多的交互关系,使得对象之间的关系更轻易明白和实现。各部分和黑社会中央人只必要与徐乐功交互,而不必要与其他对象直接交互。
三、调停者模式示例

1. 界说同事接口(Colleague)(必要被调停的人的同一举动)
  1. public interface Colleague {
  2.     void setMediator(Mediator mediator);
  3.     void receiveMessage(String message);
  4. }
复制代码
2. 实现具体同事类(ConcreteColleague) (具体要被调停的人、警员、黑帮等)
  1. public class PoliceDepartment implements Colleague {
  2.     private Mediator mediator;
  3.     private String name;
  4.     public PoliceDepartment(String name) {
  5.         this.name = name;
  6.     }
  7.     @Override
  8.     public void setMediator(Mediator mediator) {
  9.         this.mediator = mediator;
  10.     }
  11.     @Override
  12.     public void receiveMessage(String message) {
  13.         System.out.println(name + " 收到消息: " + message);
  14.     }
  15.     public void requestResource(String resource) {
  16.         mediator.requestResource(this, resource);
  17.     }
  18.     public void enforceOrder() {
  19.         System.out.println(name + " 维持秩序,确保破案率提高。");
  20.     }
  21. }
  22. public class BlackMarket implements Colleague {
  23.     private Mediator mediator;
  24.     private String name;
  25.     public BlackMarket(String name) {
  26.         this.name = name;
  27.     }
  28.     @Override
  29.     public void setMediator(Mediator mediator) {
  30.         this.mediator = mediator;
  31.     }
  32.     @Override
  33.     public void receiveMessage(String message) {
  34.         System.out.println(name + " 收到消息: " + message);
  35.     }
  36.     public void requestResource(String resource) {
  37.         mediator.requestResource(this, resource);
  38.     }
  39.     public void provideProtectionFee() {
  40.         System.out.println(name + " 提供保护费,确保黑市稳定。");
  41.     }
  42. }
复制代码
3. 界说调停者接口(Mediator) (调停者的举动)
  1. public interface Mediator {
  2.     void requestResource(Colleague colleague, String resource);
  3. }
复制代码
4. 实现具体调停者类(ConcreteMediator)(徐乐功)
  1. public class PoliceMediator implements Mediator {
  2.     private PoliceDepartment policeDepartment;
  3.     private BlackMarket blackMarket;
  4.     public void setPoliceDepartment(PoliceDepartment policeDepartment) {
  5.         this.policeDepartment = policeDepartment;
  6.     }
  7.     public void setBlackMarket(BlackMarket blackMarket) {
  8.         this.blackMarket = blackMarket;
  9.     }
  10.     @Override
  11.     public void requestResource(Colleague colleague, String resource) {
  12.         if (colleague == policeDepartment) {
  13.             if (resource.equals("保护费")) {
  14.                 blackMarket.receiveMessage("警察局请求保护费。");
  15.                 blackMarket.provideProtectionFee();
  16.             }
  17.         } else if (colleague == blackMarket) {
  18.             if (resource.equals("保护费")) {
  19.                 policeDepartment.receiveMessage("黑市提供保护费。");
  20.                 policeDepartment.enforceOrder();
  21.             }
  22.         }
  23.     }
  24. }
复制代码
5、调停场景重现
  1. public class Main {
  2.     public static void main(String[] args) {
  3.         // 创建具体同事对象
  4.         PoliceDepartment policeDepartment = new PoliceDepartment("警察局");
  5.         BlackMarket blackMarket = new BlackMarket("黑市");
  6.         // 创建具体调停者对象
  7.         PoliceMediator mediator = new PoliceMediator();
  8.         // 设置调停者
  9.         policeDepartment.setMediator(mediator);
  10.         blackMarket.setMediator(mediator);
  11.         // 设置同事对象
  12.         mediator.setPoliceDepartment(policeDepartment);
  13.         mediator.setBlackMarket(blackMarket);
  14.         // 请求资源
  15.         policeDepartment.requestResource("保护费");
  16.     }
  17. }
  18. //输出
  19. 黑市 收到消息: 警察局请求保护费。
  20. 黑市 提供保护费,确保黑市稳定。
  21. 警察局 收到消息: 黑市提供保护费。
  22. 警察局 维持秩序,确保破案率提高。
复制代码

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

×
登录参与点评抽奖,加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表