设计模式解析------笔记,摘录

来源:互联网 发布:学霸帮软件免费下载 编辑:程序博客网 时间:2024/04/29 20:59

一、如何找类及其方法。以前的办法是根据用例找其中的名次和动词,这个方法常常会产生超出我们需要的庞大类层次或者偏离需求的类。而James R.Trott的观点是根据使用的共性和可变性分析作为主要的工具,这要优于仅仅关注名词和动词。

根据共性和可变性找出来的类又如何找他们的方法呢?我们要知道类的一个基本原则:对象应该只对自己负责。因此答案也就很明显了,找方法其实就是在找这个类的责任是什么。

     

二、找到了类后如何进行类和接口的设计。在设计以应对变化的过程中,应该遵循的两个基本策略。

找出变化并封装之。

优先使用对象聚集而不是继承。

    我现在已经看了FacadeStrategyAdapterBridge,三个模式,下面是设计类的一些心得。

a,  有了类和方法,找出共性的方法将其抽象,特殊的方法抽出来定义到接口里。

b,  如果方法里所使用的对象多变(对象多态),那么把变化的对象抽出来进行封装。这里用到了Strategy模式。

c,  如果方法的实现多变,那么根据对象与实现解耦原则,把变化的方法抽象出来进行封装。这里用到的是Bridge模式。

d,  如果当前类需要使用到另一个系统已实现的部分方法时,我们并不想关心该系统内部的具体实现,那么定义接口以供当前类调用。这里用到的是Facada模式。

e,  如果当前类需要使用另一个类/接口已实现的方法,那么我们采用Adapter模式。

Adapter模式有两种。

对象Adapter模式-------用当前的子类(适配对象)去包含另一个对象(被适配的对象),说白了就是在子类定义被使用的类/接口作为属性。

Adapter模式----------采用多重继承,让子类继承被使用的对象,这时候这个对象只能是接口。

         注意:很多人会觉得FacadaAdapter挺像的,其实他们的差别比较微妙。Facada至于一个非常庞大的对象面前,它隐藏了多个类;而Adapter通常只隐藏一个,用来包装几个共同实现所需功能的小对象也是可能的。结论:Facada简化了接口,而Adapter将一个接口转化为另一个接口。

(路过的高手,哪里有不对的请指正^-^。To be continue)

原创粉丝点击