设计模式 - 中间人模式
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