设计模式 - 中间人模式

Posted IT之心

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式 - 中间人模式相关的知识,希望对你有一定的参考价值。

类别

行为型

意图

定义一个对象,用来封装一组对象交互。
中介者通过保持其他对象的引用来促进松耦合,
它可以让你独立地改变他们的互动。


适用范围

  • 一组对象以明确定义但复杂的方式进行通信。所产生的相互依赖关系是非结构化的,难以理解

  • 重复使用对象是困难的,因为它涉及并与许多其他对象进行通信

  • 分布在几个类之间的行为应该可以自定义,而不需要很多的子类化

主要代码

public interface Party {

void addMember(PartyMember member);

void act(PartyMember actor, Action action);

}

public interface PartyMember {

void joinedParty(Party party);

void partyAction(Action action);

void act(Action action);

}
public abstract class PartyMemberBase implements PartyMember {

private static final Logger LOGGER = LoggerFactory.getLogger(PartyMemberBase.class);

protected Party party;

@Override
public void joinedParty(Party party) {
LOGGER.info("{} joins the party", this);
this.party = party;
}

@Override
public void partyAction(Action action) {
LOGGER.info("{} {}", this, action.getDescription());
}

@Override
public void act(Action action) {
if (party != null) {
LOGGER.info("{} {}", this, action);
party.act(this, action);
}
}

@Override
public abstract String toString();
}
public class Hobbit extends PartyMemberBase {

@Override
public String toString() {
return "Hobbit";
}
}
Party party = new PartyImpl();
Hobbit hobbit = new Hobbit();
Wizard wizard = new Wizard();
Rogue rogue = new Rogue();
Hunter hunter = new Hunter();

// add party members
party.addMember(hobbit);
party.addMember(wizard);
party.addMember(rogue);
party.addMember(hunter);

// perform actions -> the other party members
// are notified by the party
hobbit.act(Action.ENEMY);
wizard.act(Action.TALE);
rogue.act(Action.GOLD);
hunter.act(Action.HUNT);

引用

  • Design patterns implemented in Java

  • Class Timer

  • Interface Executor

  • Interface ExecutorService

  • Interface ScheduledExecutorService

  • Class Method


以上是关于设计模式 - 中间人模式的主要内容,如果未能解决你的问题,请参考以下文章

尝试使用片段保存夜间模式状态

Express实战 - 应用案例- realworld-API - 路由设计 - mongoose - 数据验证 - 密码加密 - 登录接口 - 身份认证 - token - 增删改查API(代码片段

设计模式 - 中间人模式

编译原理—语义分析语法制导翻译翻译模式中间代码生成

csharp C#代码片段 - 使类成为Singleton模式。 (C#4.0+)https://heiswayi.github.io/2016/simple-singleton-pattern-us

利用中间件模式简化代码逻辑