提交 0fe4d21a 编写于 作者: 门心叼龙's avatar 门心叼龙

code perfect

上级 6d8b6bed
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="VcsDirectoryMappings">
<mapping directory="$PROJECT_DIR$" vcs="Git" />
</component>
</project>
\ No newline at end of file
package com.mxdl.desigin.pattern.behavior.mediator;
import com.mxdl.desigin.pattern.behavior.mediator.entity.ConcreateColleagueA;
import com.mxdl.desigin.pattern.behavior.mediator.entity.ConcreateColleagueB;
/**
* Description: <Client><br>
* Author: mxdl<br>
......
package com.mxdl.desigin.pattern.behavior.mediator;
import com.mxdl.desigin.pattern.behavior.mediator.contract.IColleague;
import com.mxdl.desigin.pattern.behavior.mediator.contract.IMediator;
import com.mxdl.desigin.pattern.behavior.mediator.entity.ConcreateColleagueA;
import com.mxdl.desigin.pattern.behavior.mediator.entity.ConcreateColleagueB;
/**
* Description: <ConcreateMediator><br>
* Author: mxdl<br>
......@@ -7,7 +12,7 @@ package com.mxdl.desigin.pattern.behavior.mediator;
* Version: V1.0.0<br>
* Update: <br>
*/
public class ConcreateMediator implements Mediator {
public class ConcreateMediator implements IMediator {
private ConcreateColleagueA mColleagueA;
private ConcreateColleagueB mColleagueB;
......@@ -20,7 +25,7 @@ public class ConcreateMediator implements Mediator {
}
@Override
public void sendMessage(String msg, Colleague colleague) {
public void sendMessage(String msg, IColleague colleague) {
System.out.println("中介开始转发消息");
if(colleague == mColleagueA){
//如果是A发来了消息,则把这个消息转发给B
......
package com.mxdl.desigin.pattern.behavior.mediator;
package com.mxdl.desigin.pattern.behavior.mediator.contract;
/**
* Description: <Colleague><br>
* Description: <IColleague><br>
* Author: mxdl<br>
* Date: 2019/12/20<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public interface Colleague {
public interface IColleague {
void sendMessage(String message);
void notifyMessage(String messaege);
}
package com.mxdl.desigin.pattern.behavior.mediator;
package com.mxdl.desigin.pattern.behavior.mediator.contract;
import com.mxdl.desigin.pattern.behavior.mediator.contract.IColleague;
/**
* Description: <Mediator><br>
* Description: <IMediator><br>
* Author: mxdl<br>
* Date: 2019/12/20<br>
* Version: V1.0.0<br>
* Update: <br>
*/
public interface Mediator {
void sendMessage(String msg,Colleague colleague);
public interface IMediator {
void sendMessage(String msg, IColleague colleague);
}
package com.mxdl.desigin.pattern.behavior.mediator;
package com.mxdl.desigin.pattern.behavior.mediator.entity;
import com.mxdl.desigin.pattern.behavior.mediator.contract.IColleague;
import com.mxdl.desigin.pattern.behavior.mediator.contract.IMediator;
/**
* Description: <ConcreateColleagueA><br>
......@@ -7,10 +10,10 @@ package com.mxdl.desigin.pattern.behavior.mediator;
* Version: V1.0.0<br>
* Update: <br>
*/
public class ConcreateColleagueA implements Colleague {
Mediator mMediator;
public class ConcreateColleagueA implements IColleague {
IMediator mMediator;
public ConcreateColleagueA(Mediator mediator) {
public ConcreateColleagueA(IMediator mediator) {
mMediator = mediator;
}
......
package com.mxdl.desigin.pattern.behavior.mediator;
package com.mxdl.desigin.pattern.behavior.mediator.entity;
import com.mxdl.desigin.pattern.behavior.mediator.contract.IColleague;
import com.mxdl.desigin.pattern.behavior.mediator.contract.IMediator;
/**
* Description: <ConcreateColleagueA><br>
......@@ -7,10 +10,10 @@ package com.mxdl.desigin.pattern.behavior.mediator;
* Version: V1.0.0<br>
* Update: <br>
*/
public class ConcreateColleagueB implements Colleague {
Mediator mMediator;
public class ConcreateColleagueB implements IColleague {
IMediator mMediator;
public ConcreateColleagueB(Mediator mediator) {
public ConcreateColleagueB(IMediator mediator) {
mMediator = mediator;
}
......
@startuml
interface IColleague {
void sendMessage(String message);
void notifyMessage(String messaege);
}
interface IMediator {
void sendMessage(String msg, IColleague colleague);
}
class ConcreateColleagueA implements IColleague
class ConcreateColleagueB implements IColleague
class ConcreateMediator implements IMediator
ConcreateMediator --> ConcreateColleagueA
ConcreateMediator --> ConcreateColleagueB
@enduml
\ No newline at end of file
特点:把多个对象之间多对多的网状关系办成了一对多的星状关系,各个对象通过中介者进行通信
优点:关系对象之间的耦合度降低了
缺点:中介类的责任过于重大,一旦它出错了,整个系统都处于一种危险境地
举例:联合国就是一个中介,用来调停各国之间的矛盾和冲突,维护世界和平
\ No newline at end of file
特点:访问者模式适用于数据结构比较稳当的数据,它把数据结构和基于数据结构的操作彻底分开
优点:使得操作数据的操作可以自由的演化
缺点:但是如果新增了数据结构处理就变得麻烦
距离:男人和女人在不同状态下的不同体现
\ No newline at end of file
......@@ -3,25 +3,26 @@ interface IVistor{
void vistorMan(Man manager);
void vistorWoman(Woman expler);
}
note left:访问协议
class SuccVistor implements IVistor{
}
class FailVistor implements IVistor{
}
note left:访问者协议
class SuccVistor
note left:成功的访问者
class SuccVistor implements IVistor
class FailVistor
note right:失败的访问者
class FailVistor implements IVistor
class Person{
String name;
void accept(IVistor vistor);
}
note right:被访问的实体对象
note left:被访问的实体对象
class Man extends Person{
}
class Woman extends Person{
}
Person -.> IVistor
'IVistor -.> Man
'IVistor -.> Woman
class Client
Client --> IVistor
Client --> Person
@enduml
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册