首页 > 代码库 > 设计模式--基础学习总结

设计模式--基础学习总结

          回顾自己学习《大话设计模式》的旅程,有一种飘忽不定的感觉,单个进入一个模式,非常好理解,但随着模式的增多,越来越发现各个设计模式之间联系紧密,又有区别。于是慢慢学着总结……

【模式归类】

        在书的结尾处,为23个设计模式(不包含简单工厂模式)做了一个系统的分类:
                                     
       个人认为这样的分类方式其实跟企业的建立过程是一样的!首先一个工程的建立必须遵循一个整体的设计模式,就好像企业要有总体的战略目标对企业行为的指导作用一样,对工程的总体建立过程提供一个建设模式--建设型!然后将工程细分,必须依赖各个类,子项目的结构联系,也就是企业的各个短期目标的建设过程所要考虑的各时间段内所存在的制约--结构型!最后考虑如何让各个子项目能够更加高效的运行--行为型。

【作用分析】

       任何设计模式都是针对某一类问题而存在的,只有在了解它作用的基础上才能学会如何使用?何时使用?
   
模式名称英文举例作用
简单工厂模式SimpleFactory“加减乘除”运算工厂调用工厂具体实例化方法,决定使用哪一个方法!(switch)具体实例类不影响其他
工厂方法模式Factory加减乘除好的分工,就像一个公司依赖不同的机器执行不一样的操作
建造者模式Builder小人的画法(胖子和瘦子)有一个指导类来指导操作顺序具体实现,避免错误发生
抽象工厂模式Ifactory基本数据库使用(数据库分类型)通过抽象工厂解除依赖(解耦)
装饰模式Decorator对人的装饰过程动态给一个对象添加方法
代理模式Proxy通过第三者送礼物远程代理,虚拟代理,安全代理,智能指引等隐藏真实操作者
外观模式Fa?ade投资基金代替各种股票为外界定义接口,用户不用关系具体实现哪个类的方法,只要知道汇总类的方法
组合模式Component子公司和部门添加保证组合对象与添加的对象保持一致,不断增加
桥接模式Bridge手机按照软件和品牌的分类实现系统可能多角度分类,降低耦合
享元模式 Flyweight网站共享代码运用共享技术有效的支持大量细粒度的对象
策略模式Strategy商场收银采用的活动策略(如打折)定义算法家族(可与简单工厂模式相结合)
模板方法模式Template问题试卷的提出不变行为搬移到超类,去除掉重复
观察者模式Observers观察老板回来去除掉两个联系紧密类之间的耦合(与委托一起起作用)
状态模式State小菜1天工作状态将状态逻辑分布到子类之间,减少相互间依赖,一个对象的行为取决于他的状态
备忘录模式Memento保存游戏进度恢复一个状态前的某一状态,撤销功能,复原操作
迭代器模式Iterator客车售票员收票过程每次都遍历每一个类成员,不容易丢失,但操作时间长
命令模式Command小摊和饭店烤羊肉串的区别设计命令队列,将命令计入日志,可实现撤销
职责链模式COR加薪避免发送者和接受者之间的耦合关系(像筛子一样)
中介者模式Meditor安理会减少了各个Colleague之间的耦合,把对象如何协作进行了抽象
解释器模式 Interprter音符的输出提供一个翻译对应表,得到对应的翻译结果
           书中用十分典型的实例为我们展现各个模式的奇妙功能,但什么事都是有瑕疵的,有时候一个简单的实例并不能完全展现一个设计模式的作用!就像工厂模式,只有再接触了一个大的实例时,才能真正理解为什么使用工厂模式,而不是用简单工厂。

【六大原则】

       设计原则是各个模式应该考虑实现的因素,正是基于这些原则的指导,设计模式才科学的应用到工程的设计建立过程中。
原则分类简称概念
单一职责原则SRP就一个类而言,应该仅有一个引起该类变化的原因,多原则必将导致效率下降
开放封闭原则OCP软件实体可以扩展不可以修改(软件更新),许进不许改
依赖倒转原则DIP细节依赖抽象(针对接口编程),可以不断给接口添加实例类,但不能为了类添加接口
里氏代换原则LSP子类可替换掉父类(继承全部非private属性和方法),结果完全不受影响
迪米特法则LoD类的结构设计,每个成员应该尽量降低访问权限,降低耦合性
合成复用原则CARP能够采用简单聚合,组合关系时不要用继承(继承的耦合程度很高)
      设计模式如果是编程思想的指导,那设计原则则是编程所应考虑的行为准则!他们最终达到的目的都是让代码可维护,可复用,可扩展,灵活性高!

【总结】

       理论学习贵在总结,对比!接受课本想法的同时也要转换成自己的理解!相信这样学习在日后的实践中会给自己提供极大的帮助的!

       


设计模式--基础学习总结