读大话设计模式Gof后的总结

来源:互联网 发布:淘宝网名龙堂 编辑:程序博客网 时间:2024/06/04 21:24

一.代码无错就是优----简单工厂模式

 1.1)命名的规范性。

   2)判断语句的合理写法。

   3)考虑不肯能成立的条件。

 2.活字印刷,面向对象

   1)可维护

   2)可扩展

   3)可复用

   4)灵活性好

 3.面向对象的好处

复用和复制,业务的封装

 4. 业务逻辑和界面逻辑分开

 5.紧耦合和松耦合

 6.简单工厂模式就是如何去实例化对象的问题

注:UML的知识点补充

空三角形+实线:继承关系

Interface+棒棒糖:接口

空三角形+虚线:接口的实现

实线箭头:关联关系

空菱形+实线:聚合关系

实菱形+实线:拥有关系

虚箭头:依赖关系

二.商场促销-----策略模式

  1.  1.  面向对象的编程并不是类越多越好,类的划分是为了封装,但分类的基础是抽象,具有相同属性和功能的抽象集合才是类。

     2.  策略模式:定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响起用算法的客户。

     

     

    需要添加一个context上下文,维护一个对strategy对象的引用。

 

三.拍摄UFO-----单一职责模式

   就一个类而言,他应该有一个引起他变化的原因。

   如果一个类承担太多的职责,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。

四.考研求职两不误-----开放--封闭原则
     开放--封闭原则,是说软件实体(类,模板,函数等等)应该可以扩展,但是不可以修改。
     在我们最初编写代码时,假设变化不会发生时,我们就创建抽象来隔离以后发生的同类变化。面对需求,对程序的改动时通过增加新的代码进行的,而不是更改现有的代码,这就是“封闭--开放原则”

五.会修电脑不会修收音机-----依赖倒转原则
      针对接口编程,而不是针对实现编程。
六.穿什么有多重要-----装饰模式
        动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成的子类更为灵活。
七.为别人做嫁衣-----代理模式
    为其他对象提供一种代理以控制对这个对象的访问。【DP】
    远程代理。虚拟代理。安全代理。智能引导。
八.雷锋依然在人间----工厂方法模式
     简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态的实例化相关的类,对于客户端来说,去除了与具体发产品的依赖。
     工厂方法模式,定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
     工厂方法克服了简单工厂违背开放--封闭原则的缺点,又保持了封装对象创建过程的优点。工厂方法模式是简单工厂模式的进一步抽象和推广。但是缺点是由于每加一个产      品,就需要加一个产品工厂的类,增加了一个额外的开发量。

九.简历复印----原型模式
  1. 原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

    原型模式其实就是从一个对象在创建另外一个可定制的对象,而且不需要知道任何创建的细节。

  2. .net在system命名空间中提供了ICloneable接口,其中就是唯一的方法Clone(),只需要实现这个接口就可以完成原型模式了。

  3. 但是必须添加如下代码:前复制

  4. piblic Object Clone(){

  5.   return (Object)this.MemberwiseClone();

  6. }

  7. MemberwiseClone()方法是这样,如果字段是值类型的,则对该字段执行逐位复制,如果字段是引用类型,则复制引用但不复制引用的对象;因此,原始对象及其复本引用同一对象。意思就是MemberwiseClone()只能对浅复制,不能实现里面有类的情况。那样就要进行深复制。

  8. 调用深复制  this.work=(workExperience)work.Clone();

十一.无熟人难办事-----迪米特法则
    迪米特法则也叫最小知识原则,如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用。如果其中的一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用。
十二.牛市股票还会亏钱----外观模式
  外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层的接口,这个接口使得这一子系统更加容易实用。
首先,在设计初期阶段,应该要有意识的将不同的两个层分离。
其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,增加外观Facade可以提供一个简单的接口,减少他们之间的依赖。
第三,在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了。
ps:对于复杂难以维护的老系统,直接去改或去扩展都可能产生很多问题,分成两个小组,一个开发Facade与老系统的交互,另一个只要了解Facade的接口,直接开发新的系统调用这些接口即可,确实可以减少很多不必要的麻烦。

十三.好菜每回味不同-----建造这模式
 如果要将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示时。建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式中一个很重要的类,指挥类(Director),用它来创建制造过程,也用它来隔离用户与建造过程的关联。

十四。老板回来,我不知道----观察者模式
     观察者模式定义一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有观察者对象,使他们能够自动更新自己。
    
           








     
        















0 0