纯属写着看(全是一己之见)----设计模式

取自《大话设计模式》,这本书写得挺好的。

1.简单工厂模式

对于不变的抽象成类,通过继承实现相同的操作,通过工厂类生成抽象类,而具体根据type值选择相对应的子类进行返回。唯一不好的是在前台调用时会显出工厂类,通过策略模式可以进一步隐藏工厂类。

2.策略模式

简单工厂是生成相应子类的地方,而策略模式是调用子类功能。通过对象参数来调用对象参数的统一方法。但是在调用Context上下文类时,会暴露各种具体的策略子类。 通过简单工厂+策略模式会缓解该情况,但是不能避免需要switch 条件分支判断。

3.简单工厂 + 策略模式

继续使用type 字符类型生成相对应的策略子类并直接进行调用方法,而不是返回类,这样使得策略类不会被前端发现,而只暴露了简单工厂和策略混合的Context类。感觉上是优于简单工厂和策略模式。

4.设计原则--看题目即懂,感觉有些都重复。

单一职责原则、开放-封闭原则、依赖倒转原则、里式代换原则

依赖倒转原则:重要思想是要针对接口编程,不要对实现编程。

里式代换原则:子类型必须能够替换掉父类型,也就是子类实现父类的所有功能。

5.装饰模式:与建造者不同,可能无数个打扮方案。与人穿衣服,不能一成不变。

一套装饰,需要按照一种步骤连环套,所以需要一个锁链也就是设置一个对象属性,设置该对象的set方法,装饰类起锁链的作用,而Component起输出自己衣物的描述特征。同时装饰类要继承Component类,实现其显示的功能描述。

Component是需要被装饰的对象,而Decorator是装饰Component 套服装的类。

这样可以打造不同的穿衣风格。

使用情景:在原有系统方法的基础上,进行扩展麻烦的时候,可以通过给他设计一个装饰类,和一个抽象类,使用原系统的原有方法名称 ,可以对复杂臃肿的系统功能,进行新型改造,也可以不用任何装饰,使用原有系统,而在需要特殊功能进行装饰,此处原有系统就是Concrete Component类。

6.代理模式

代替某对象实现,对象想要的操作。

7.工厂方法模式

工厂方法是在简单工厂的基础上,生成多种具体的工厂,类的数量变多。

8.原型模式

原型模式就是继承原型类的抽象方法Clone,在clone里面进行clone 操作,现实中有ICloneable接口,可以直接实现接口,重写Clone方法。这里面的一个重要概念是浅复制和深复制。对于常见的基本数据类型使用clone 方法都是浅复制,但是使用引用类型的clone 方法,只是会复制一个引用,也就是没有新的对象产生,这时候就需要考虑深复制,对类里面的对象属性所对应的类也需要继承Icloneable方法,使得每个层次都是最小粒度,如果有粗粒度,就对该粒度的类实现接口。

9.模板方法模式

模板方法:将子类相同代码提取到父类,而将细节的改变利用虚方法,让子类实现,这样达到了很好的复用功能。

10.外观模式:

外观模式,在外观类里面有较多的对象属性,通过方法,来设计不同对象的方法调用方式,而在外显示一种方法的调用。外观模式将所涉及的类对象进行了封装一样。

11.建造者模式:建造类需要稳定的步骤结构。

总共需要设计者,建造者,建造者具体类。设计者是创建一个建造者对象,而在该设计方法中,调用每个建造者所必须实现的虚方法,然后每个具体建造者需要实现建造者所设计的虚方法。

12.观察者模式:

观察者是需要实现更新的一方,主题者是通知的一方,主题者需要具有增加删除自己需要管理的观察者对象,当通知时,可以告知所有所属的具体观察者更新自身的方法。

使用场景,一个对象的状态变化需要告知所有与它关联的对象进行相应改变时,需要使用观察者模式。

本书中分析了,虽然一个对象的状态改变了无数个与它关联的对象的动作,但是不能保证每个写好类中有相同的更新方法,而应该是不同的方法名称。所以引出了委托的概念,这样,主题者只需要将需要通知的对象的方法进行存储,然后调用自己的方法进行遍历。

13.抽象工厂模式

个人感觉抽象工厂模式和工厂模式都差不多,如果不暴露具体工厂将会使得代码得到极大简化,此时引入了依赖注入的概念,这个专门针对swith条件判断生成哪个类的问题,在Spring中会使用依赖注入,比如sessionFcatory的赋值,只需要配置一个db.propertise文件,即可轻松更换具体应用中的数据库。

14.状态模式

状态模式是为了减少条件状态判断语句,如果有清晰地长判断语句,可以使用状态模式进行控制,每一种条件分支的语句可以抽象为一种状态,然后在为Work类设置初始状态,在状态里面可以设置Work 类的下一个状态。

15.适配器模式

适配器模式是在需要使用现存类的接口,但是接口名称不同时,需要使用的模式。总共有两种适配器。一般设计的功能相同但是方法名称不同时,而通过一个适配器来调用另一个接口中的相同功能的方法,但是一般不提倡 这个模式,只有两边都很难修改时,才会考虑该模式。也有在使用第三方软件时,接口不同时,使用适配器模式。

16.备忘录模式

17.组合模式

18.迭代器模式

19.单例模式

20.桥接模式

21.命令模式

https://2.taobao.com/item.htm?spm=2007.1000622.0.0.IXuryD&id=576682958956

猜你喜欢

转载自blog.csdn.net/u012211422/article/details/82287441