设计模式解析_设计模式解析书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > 设计模式解析 > 设计模式解析
david++ 设计模式解析 的书评 发表时间:2012-03-04 13:03:25

设计模式解析


优秀代码的目标:

        * 高效
        * 健壮
        * 灵活
        * 无冗余
        * 可读
        * 可测试


面向对象的一些原则和方法

        * 内聚性(cohesion):例程中操作之间联系的紧密程度
        * 耦合性(coupling):两个例程之间联系的紧密程度
        * 软件开发的目标:高内聚、松耦合
        * 发现变化并将其封装
                1. 寻找变化,并将它封装在一个单独的类中
                2. 将这个类包含在另一个类

        * 当一个类处理越来越多不同变化时,代码的内聚性就会变得很差。即:它处理的特殊情况越多,可理解性就越差。
        * 设计的两步法:1> 抽象类(共性)—— 需要什么接口来出来这个类的所有责任?2> 派生类(可变性)——对于这个给定的特定实现,应该怎样根据给定的规约来实现它?
        * 处理新需求的选择: 1> 分析瘫痪;2> 放任自流; 3> 考虑变化的设计
        * 考虑变化的设计
                * 原则:针对接口编程,而不是针对实现编程
                * 原则:优先使用对象组合,而不是类继承
                * 原则:考虑设计中什么应该是可变的

        * 防止“分支蔓延”
        * 一条规则,实现一次

组合起来:用模式思考

        * Alexander: 设计应该从问题的一个简单陈
        * 述开始,然后通过在这个陈述中加入信息,使它更加详细(也更加复杂)。一种基于模式的方法(《建筑的永恒之道》),
                1. 从整体的概念性理解开始,以理解需要实现的目标
                2. 找到整体中出现的模式
                3. 从为其它模式创造背景的那些模式开始
                4. 从背景向内:应用这些模式,找到新的模式,并重复
                5. 最后,通过每次应用一个模式,改进设计,并在所创建的背景中予以实现

        * 用模式思考的过程:
                1. 找出模式
                2. 分析和应用模式
                        * 按背景的创建顺序将模式排序
                        * 选择模式并扩展设计
                        * 找到其它模式
                        * 重复

                3. 添加细节

        * 考虑背景时候的一条规则:先考虑系统中需要什么,然后再去关注如何创建它们
        * 背景和被使用的关系:当一个模式使用另一个模式时,被使用的模式就处于使用模式的背景中

设计模式的策略:

        * 从背景设计
        * 在类中封装变化

设计模式的原则:

        * 开闭原则——模块、方法和类应该对扩展开放,对修改封闭。换言之,软件应该设计成不加修改缘由代码就能扩展功能。
        * 依赖倒置原则——其背后的理念是在设计细节之前先创建总体概念。高层模块不应该依赖底层模块。相反,它们都应该依赖于抽象。
        * 理性怀疑原则——小心过分依赖模式。概念层次的模式和模型都是真理的抽象。它们是已往经验和教训的结晶。使用它们来帮助我们思考摆在前面的问题。

共性与可变性分析(CVA):

        1. 先寻找共性
        2. 从这些共性创建抽象
        3. 从共性的变化寻找派生
        4. 看共性之间的关系如何

分析矩阵:

        1. 找到某种特定情况中最重要的特性,并用矩阵将它们组织起来。用特性所表示的概念为每个特性标记。
        2. 继续处理其它情况,安需要扩展这个矩阵。处理每一情况时应该独立于其它情况。
        3. 用新的概念扩展该分析矩阵
        4. 用行发现规则
        5. 用列发现实现
        6. 从这种分析中确定模式
        7. 得到高层设计


对象创建和管理规则:对象应该要么构造和/或管理其它对象,要么使用对象,而不应该兼而有之。

常见的设计模式:

        * Facade
        * Adapter
        * Strategy
        * Bridge
        * Abstract Factory
        * Decorator
        * Observer
        * Template Method
        * Singleton 和 Double-Checked Locking
        * Object Pool
        * Factory Method

展开全文


推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读