马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
一、什么是调停者模式
接下来是调停者模式,还是谁人思绪,我们从经典影戏中来举个例子吧,下面有请调停者大家-----《款项帝国》中的 徐乐功(梁家辉扮演)。该片是讲诉香港廉政公署创建前,黑社会及警员之间的一些幕后生意业务。此中有一个情结英国政府派出得力干将决定整治香港乱象,这个经典台词就是在老外上任第一天的景象。来上台词
《款项帝国》-徐乐功经典台词:
“乐哥,我听说那老外很拽啊!”
“呵呵,我家的狗旺财也很拽呀,它见人就咬就是不咬我!为什么?我养它嘛~哈哈”
“喂,毕竟谁人老外他是收钱还是不收钱?”
“我如今不敢问!”
“会有猫不吃鱼嘛?恩?我没当探长的时间,掩护费都是乱收的。全香港警员都可以收钱,每条街上有几十家地下赌场和倡寮,天天打架,破案率低的吓死人!自从我认识了猪油仔,我们俩一起订立规矩,同一收钱。局长收三成,我们这些探长收两成,别的全香港的警员分享三成半,限定每条街地下倡寮和赌场的数目,让全部妓女都招到客,地下赌场都有买卖做,那些流氓有钱赚就不会打架咯!我们的破案率是有史以来最高的!我就不信这个老外敢粉碎规矩。假如再搞到天天砍人,尸横遍野的时间,我看他怎么负这个责!”
这句台词充实体现了徐乐功作为调停者的脚色,他通过重新分配资源和订定规则,维持了“香港警界和黑社会的秩序”。这种模式不光镌汰了内部的杂乱和辩论,还进步了团体的服从和稳固性,调停者模式是一种举动型筹划模式,通过引入一个调停者对象来会合处理处罚一组对象之间的交互。这种模式的目的是镌汰对象之间的直接通讯。
二、为什么使用调停者模式
- 复杂的交互关系:在影戏中,香港警界和黑社会之间存在着复杂的优点关系和频仍的交互。假如没有一个同一的和谐者,这些关系很轻易变得杂乱,导致内部辩论和服从低下。
- 会合管理:徐乐功通过订定规则和重新分配资源,会合管理了警界和黑社会的交互。这种会合管理的方式使得复杂的交互关系变得有序,镌汰了直接的辩论和杂乱。
- 动态变革的交互:当外部情况发生变革(如新的探长上任)时,徐乐功可以通过调解规则和资源分配来应对变革,而不必要改变整个体系的布局。
- 简化对象关系:调停者模式将多对多的交互关系转化为一对多的交互关系,使得对象之间的关系更轻易明白和实现。各部分和黑社会中央人只必要与徐乐功交互,而不必要与其他对象直接交互。
三、调停者模式示例
1. 界说同事接口(Colleague)(必要被调停的人的同一举动)
- public interface Colleague {
- void setMediator(Mediator mediator);
- void receiveMessage(String message);
- }
复制代码 2. 实现具体同事类(ConcreteColleague) (具体要被调停的人、警员、黑帮等)- public class PoliceDepartment implements Colleague {
- private Mediator mediator;
- private String name;
- public PoliceDepartment(String name) {
- this.name = name;
- }
- @Override
- public void setMediator(Mediator mediator) {
- this.mediator = mediator;
- }
- @Override
- public void receiveMessage(String message) {
- System.out.println(name + " 收到消息: " + message);
- }
- public void requestResource(String resource) {
- mediator.requestResource(this, resource);
- }
- public void enforceOrder() {
- System.out.println(name + " 维持秩序,确保破案率提高。");
- }
- }
- public class BlackMarket implements Colleague {
- private Mediator mediator;
- private String name;
- public BlackMarket(String name) {
- this.name = name;
- }
- @Override
- public void setMediator(Mediator mediator) {
- this.mediator = mediator;
- }
- @Override
- public void receiveMessage(String message) {
- System.out.println(name + " 收到消息: " + message);
- }
- public void requestResource(String resource) {
- mediator.requestResource(this, resource);
- }
- public void provideProtectionFee() {
- System.out.println(name + " 提供保护费,确保黑市稳定。");
- }
- }
复制代码 3. 界说调停者接口(Mediator) (调停者的举动)- public interface Mediator {
- void requestResource(Colleague colleague, String resource);
- }
复制代码 4. 实现具体调停者类(ConcreteMediator)(徐乐功)
- public class PoliceMediator implements Mediator {
- private PoliceDepartment policeDepartment;
- private BlackMarket blackMarket;
- public void setPoliceDepartment(PoliceDepartment policeDepartment) {
- this.policeDepartment = policeDepartment;
- }
- public void setBlackMarket(BlackMarket blackMarket) {
- this.blackMarket = blackMarket;
- }
- @Override
- public void requestResource(Colleague colleague, String resource) {
- if (colleague == policeDepartment) {
- if (resource.equals("保护费")) {
- blackMarket.receiveMessage("警察局请求保护费。");
- blackMarket.provideProtectionFee();
- }
- } else if (colleague == blackMarket) {
- if (resource.equals("保护费")) {
- policeDepartment.receiveMessage("黑市提供保护费。");
- policeDepartment.enforceOrder();
- }
- }
- }
- }
复制代码 5、调停场景重现- public class Main {
- public static void main(String[] args) {
- // 创建具体同事对象
- PoliceDepartment policeDepartment = new PoliceDepartment("警察局");
- BlackMarket blackMarket = new BlackMarket("黑市");
- // 创建具体调停者对象
- PoliceMediator mediator = new PoliceMediator();
- // 设置调停者
- policeDepartment.setMediator(mediator);
- blackMarket.setMediator(mediator);
- // 设置同事对象
- mediator.setPoliceDepartment(policeDepartment);
- mediator.setBlackMarket(blackMarket);
- // 请求资源
- policeDepartment.requestResource("保护费");
- }
- }
- //输出
- 黑市 收到消息: 警察局请求保护费。
- 黑市 提供保护费,确保黑市稳定。
- 警察局 收到消息: 黑市提供保护费。
- 警察局 维持秩序,确保破案率提高。
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |