diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 0000000000000000000000000000000000000000..94a25f7f4cb416c083d265558da75d457237d671 --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/Client.java b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/Client.java index 86b52a88f591d920985836b7ebb045391d487476..98481f6c20d9f1a0a1e80ff5b105e78a7fef1bb4 100644 --- a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/Client.java +++ b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/Client.java @@ -1,5 +1,8 @@ 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:
* Author: mxdl
diff --git a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/ConcreateMediator.java b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/ConcreateMediator.java index b10f9993328b32da7387b1b674a3015bd24318bc..a154823eb7df74437aa07cd491bf490123845f4b 100644 --- a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/ConcreateMediator.java +++ b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/ConcreateMediator.java @@ -1,5 +1,10 @@ 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:
* Author: mxdl
@@ -7,7 +12,7 @@ package com.mxdl.desigin.pattern.behavior.mediator; * Version: V1.0.0
* Update:
*/ -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 diff --git a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/Mediator.java b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/Mediator.java deleted file mode 100644 index 3d3b125103cd75de760ee58b24cf364aa7203eb5..0000000000000000000000000000000000000000 --- a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/Mediator.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.mxdl.desigin.pattern.behavior.mediator; - -/** - * Description:
- * Author: mxdl
- * Date: 2019/12/20
- * Version: V1.0.0
- * Update:
- */ -public interface Mediator { - void sendMessage(String msg,Colleague colleague); -} diff --git a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/Colleague.java b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/contract/IColleague.java similarity index 60% rename from lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/Colleague.java rename to lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/contract/IColleague.java index 75126c4f2f36cdfb5f77554e1d0584a861004f0f..296be902300f07e24e86573498b6a8367b8279e0 100644 --- a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/Colleague.java +++ b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/contract/IColleague.java @@ -1,13 +1,13 @@ -package com.mxdl.desigin.pattern.behavior.mediator; +package com.mxdl.desigin.pattern.behavior.mediator.contract; /** - * Description:
+ * Description:
* Author: mxdl
* Date: 2019/12/20
* Version: V1.0.0
* Update:
*/ -public interface Colleague { +public interface IColleague { void sendMessage(String message); void notifyMessage(String messaege); } diff --git a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/contract/IMediator.java b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/contract/IMediator.java new file mode 100644 index 0000000000000000000000000000000000000000..b9125d664e5963f776704cced3a0c86b7717961f --- /dev/null +++ b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/contract/IMediator.java @@ -0,0 +1,14 @@ +package com.mxdl.desigin.pattern.behavior.mediator.contract; + +import com.mxdl.desigin.pattern.behavior.mediator.contract.IColleague; + +/** + * Description:
+ * Author: mxdl
+ * Date: 2019/12/20
+ * Version: V1.0.0
+ * Update:
+ */ +public interface IMediator { + void sendMessage(String msg, IColleague colleague); +} diff --git a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/ConcreateColleagueA.java b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/entity/ConcreateColleagueA.java similarity index 59% rename from lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/ConcreateColleagueA.java rename to lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/entity/ConcreateColleagueA.java index 80a5eb83b677bbef06a678f395f20c8c5ab2c236..4d1ec231157b861657d3aba0eaf07025a68206a2 100644 --- a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/ConcreateColleagueA.java +++ b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/entity/ConcreateColleagueA.java @@ -1,4 +1,7 @@ -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:
@@ -7,10 +10,10 @@ package com.mxdl.desigin.pattern.behavior.mediator; * Version: V1.0.0
* Update:
*/ -public class ConcreateColleagueA implements Colleague { - Mediator mMediator; +public class ConcreateColleagueA implements IColleague { + IMediator mMediator; - public ConcreateColleagueA(Mediator mediator) { + public ConcreateColleagueA(IMediator mediator) { mMediator = mediator; } diff --git a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/ConcreateColleagueB.java b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/entity/ConcreateColleagueB.java similarity index 59% rename from lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/ConcreateColleagueB.java rename to lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/entity/ConcreateColleagueB.java index 4e9cdc9c766b216598291e40763c8788cf00770f..159bf9a811689e4b4d5b3b94311eecd912012b7a 100644 --- a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/ConcreateColleagueB.java +++ b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/entity/ConcreateColleagueB.java @@ -1,4 +1,7 @@ -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:
@@ -7,10 +10,10 @@ package com.mxdl.desigin.pattern.behavior.mediator; * Version: V1.0.0
* Update:
*/ -public class ConcreateColleagueB implements Colleague { - Mediator mMediator; +public class ConcreateColleagueB implements IColleague { + IMediator mMediator; - public ConcreateColleagueB(Mediator mediator) { + public ConcreateColleagueB(IMediator mediator) { mMediator = mediator; } diff --git a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/mediator.puml b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/mediator.puml new file mode 100644 index 0000000000000000000000000000000000000000..8d3a3d2cff17d526da3a98a93374a5f4dae8f471 --- /dev/null +++ b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/mediator.puml @@ -0,0 +1,15 @@ +@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 diff --git a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/note.txt b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/note.txt new file mode 100644 index 0000000000000000000000000000000000000000..d747ab43bb2107633344198a10b921b35e251837 --- /dev/null +++ b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/mediator/note.txt @@ -0,0 +1,4 @@ +特点:把多个对象之间多对多的网状关系办成了一对多的星状关系,各个对象通过中介者进行通信 +优点:关系对象之间的耦合度降低了 +缺点:中介类的责任过于重大,一旦它出错了,整个系统都处于一种危险境地 +举例:联合国就是一个中介,用来调停各国之间的矛盾和冲突,维护世界和平 \ No newline at end of file diff --git a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/vistor/note.txt b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/vistor/note.txt new file mode 100644 index 0000000000000000000000000000000000000000..6da5160a40af37f13f3390e41a6c83cb13d4ca6b --- /dev/null +++ b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/vistor/note.txt @@ -0,0 +1,4 @@ +特点:访问者模式适用于数据结构比较稳当的数据,它把数据结构和基于数据结构的操作彻底分开 +优点:使得操作数据的操作可以自由的演化 +缺点:但是如果新增了数据结构处理就变得麻烦 +距离:男人和女人在不同状态下的不同体现 \ No newline at end of file diff --git a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/vistor/vistor.puml b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/vistor/vistor.puml index 7f94946406f0b23da83eed814e08463f4709a9a1..009ff076c80bbc6c168e18f582e86c0c1a8573b1 100644 --- a/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/vistor/vistor.puml +++ b/lib_design_pattern/src/main/java/com/mxdl/desigin/pattern/behavior/vistor/vistor.puml @@ -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