关于设计模式的一些笔记

主要是关于单例模式,工厂模式,观察者模式,适配器模式,模板方法模式,策略模式,责任链模式,装饰者模式,外观模式,以及一些设计思想和原则的笔记.  

首先是关于设计思想和原则.有开闭原则,里氏代换原则,依赖倒转原则,迪米特法则,合成复用原则,单一职责原则.  

设计原则:  

1.依赖倒转原则:具体内容为面向抽象编程,高层不应该依赖于底层,高层的逻辑关系由接口实现,具体的细节由集成接口的实体类来实现.  

2.单一职责原则:一个类不应该实现过多的功能,最好只实现单一功能.  

3.迪米特法则:类与类之间的关系不应该过多的依赖于类内部的具体实现细节.实体类之间应该尽量独立.  

4.开闭原则:在扩展代码时应该尽量在原代码上扩展内容而不是修改内容.  

5.合成复用原则:尽量使用合成/聚合的方式,而不是使用继承.  

6.里氏代换原则:子类可以代替父类,即是继承就是该原则的具体实现. 


设计模式:  

1.单例模式:让类自身持有自己的唯一实例.并且提供一个获取该实例的方法,在唯一实例不存在时,该方法创建一个实例让该类持有.  

具体实现:在类内实现一个静态的自身引用,用来保存实例,实现private的构造方法,防止多个实例产生,定义一个GetInstance()静态方法来获取唯一实例.在多线程的时候使用双重锁定来保证只有一个实例.  

双重锁定,两次判断是防止加锁时有另一个线程也在调用方法  

关于设计模式的一些笔记_第1张图片

关于设计模式的一些笔记_第2张图片  

 

2.适配器模式:用于将功能类似而接口方法名不同的接口统一的设计模式,一般在自己做设计的时候没什么用,在使用第三方的组件的时候使用适配器模式将第三方的接口转换为自己用的接口方法名.  

具体实现:构造一个适配器的对象,内部定义相应的接口方法名,内部实现则调用第三方的组件相应功能的方法.关于设计模式的一些笔记_第3张图片


3.装饰者模式:可以参考http://blog.csdn.net/jason0539/article/details/22713711  

可以动态的进行功能扩展.  


4.观察者模式:可以参考java的awt接口中监听器listener的实现方法.关于设计模式的一些笔记_第4张图片(


5.模板方法模式:定义一个抽象模板方法,里面包括大部分的方法逻辑实现,而细节上的不同由集成该模板的子类来实现,即是子类使用了一个模板,在该模板的基础上完善自己的方法.  

即是将子类中重复不变的内容提到父类来实现,减少代码重复.关于设计模式的一些笔记_第5张图片

 

6.策略模式:定义一个算法接口,让各算法实现该接口,将各类使用的算法包装起来.再定义一个类通过调用该算法接口来调用这些算法.让算法和使用算法的类分离开,减小耦合.关于设计模式的一些笔记_第6张图片


7.责任链模式:当有多个对象可以处理一个请求的时候,不要用switch和if else来进行选择处理,这样会导致被处理对象和处理对象之间过度耦合,可以建立一个链式结构,将处理对象组成一个链,每次处理对象时就可以调用这个链,这样与被处理对象耦合的就只有这个链对象了,而且在这个链对象中添加链元素十分方便.类加载器的双亲委派模型也是基于这个模式建立的.(每个对象都实现同一个处理接口)


具体实现:1建立链式结构,组成独立的链条.

2用一个容器对象包含所有的处理对象,该容器对象也可以实现该处理接口,这样容器对象也可以作为处理对象组成责任链的一部分.在容器对象中定义一个计数器,利用计数器来实现链式调用.

关于设计模式的一些笔记_第7张图片


8.简单工厂模式


9.工厂方法模式:


10.外观模式: 

你可能感兴趣的:(给自己看的)