⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 欢迎大家多讨论下设计模式.txt

📁 一些关于UML的经典讨论
💻 TXT
字号:
欢迎大家多讨论下设计模式

http://www.shecn.com/best/g17/g1018.htm

欢迎大家多讨论下设计模式

--------------------------------------------------------------------------------
我是最近才接触设计模式的,其实设计模式是个双刃剑,用好了确实能解决很多棘手的问题,最主要显得很高竿,用不好则可能走火入魔。
最近老板就给了我一个可怕的任务,就是将我以前设计中用过的设计模式找出来。天知道我都用了什么模式,设计的时候根本没有考虑设计模式。没办法,只好将设计重新检查一遍。现在就有一个很典型的问题,就是:
将一个ValueObject传到一个类中进行处理,这个valueObject由两个类组成:ClassMain(主信息),ClassDetails(包含的项目信息)。我原来的设计是将不同的处理分成很多类如:checkA,checkB,saveC,saveD,每个类负责进行一种处理,但每个类只用到ValueObject中的某些数据和返回一些数据,我是不是应该将ValueObject再针对每个处理类分成各个具体的数据类如AValue,BValue等等,还是将整个ValueObject传进去。我的这种设计是否合理,是不是有其他更好的方法。
还有,对于这种情况是不是有一种或多种设计模式来解决。
肯盼各位指正,谢谢! 
 01/10/17 18:16 酷帖!    臭帖!    回复   
酷帖评价:           臭帖评价: 
返回页首 
 
 lianghaiying1   回复: 欢迎大家多讨论下设计模式

--------------------------------------------------------------------------------
好像很适合使visitor 
 01/10/18 13:01 酷帖!    臭帖!    回复   
酷帖评价:           臭帖评价: 
返回页首 
 
 lianghaiying1   回复: 欢迎大家多讨论下设计模式

--------------------------------------------------------------------------------
好像很适合使visitor 
 01/10/18 13:02 酷帖!    臭帖!    回复   
酷帖评价:           臭帖评价: 
返回页首 
 
 xmlone  回复: 欢迎大家多讨论下设计模式

--------------------------------------------------------------------------------
能具体点么? 
 01/10/18 13:31 酷帖!    臭帖!    回复   
酷帖评价:           臭帖评价: 
返回页首 
 
 lianghaiying1   回复: 欢迎大家多讨论下设计模式

--------------------------------------------------------------------------------
为checkA,checkB,saveC,saveD,定义一个父类abcd
定义虚拟方法x(),y()..
为ValueObject定义一个方法,y(abcd* abcdabcd)
{abcdabcd.x();} 
 01/10/19 12:46 酷帖!    臭帖!    回复   
酷帖评价:           臭帖评价: 
返回页首 
 
 nevernew   如何确定要看其他限制条件。

--------------------------------------------------------------------------------
当然,要把限制条件说成需求也没有问题。
我们先看你现在的Pattern,这个Pattern有什么问题?那个类的变化会波及整个系统?如果没有一个类会变化、需要变化,并且变化不会波及整个系统,这个类可能就是不需要的。

要知道,我们不是为了用GOF PATTERN而用的(因为PATTERN有很多,GOF PATTERN有23个,不是说除了这23个,其他的都不是,只是不够好,或者不够普遍),更不是为了显示自己了不起,自己是不是真的高竿,我想还是要看结果。看你的软件够不够好,架构够不够好,重用性够不够好,可维护性够不够好。实践是检验水平高低的唯一标准。

批判了不正之风之后,咱们再回头看看这个问题。
用Visitor可以。不过我试着加上限制条件之后发现,如果处理结果是一个类,是不是可以考虑Builder?如果操作入口可以归并为一个(并且不会产生波及系统的变化),可以考虑Facade。template method用不到吗?估计想不用到都不可以吧!:) 
 01/10/19 17:31 酷帖!    臭帖!    回复   
酷帖评价:           臭帖评价: 
返回页首 
 
 lianghaiying1   回复: 如何确定要看其他限制条件。

--------------------------------------------------------------------------------
说的有道理,不过Builder和Facade似乎不太合适,
如果是生成简单的对象就不用Builder,如果对象数
太少也用不上Facade。估计template method他得使。
不过是什么主要还看实际情况,咱不太了解只能是
参考意见。 
 01/10/22 10:21 酷帖!    臭帖!    回复   
酷帖评价:           臭帖评价: 
返回页首 
 
 kybin   你还是把这几个类的关系画成类图吧,这样更能看清楚。我们也能更清楚地了解你的问题。

--------------------------------------------------------------------------------
 
 01/10/22 12:34 酷帖!    臭帖!    回复   
酷帖评价:           臭帖评价: 
返回页首 
 
 xmlone   确实要用到template method

--------------------------------------------------------------------------------
诚如nevernew所说,确实要用到template method,因为有很多的过程处理都是一样的。
至于builder、visitor或facade我都觉得不太合适,也可能是我的理解有限。
后来我想了想,其实我的问题可以简化为:
结果可以统一,输入对象基本上可以统一成两个结构。这样的话是不是总的层次可以采用template method,而对于这两种不同的输入对象采用一种pattern呢?具体采用什么pattern不清楚。
再次谢谢lianghaiying1和nevernew的建议,希望遇到类似问题的朋友也能从中得到一些启发。 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -