.说⼀下你了解的⼏种设计模式⼀、设计模式的分类
总体来说设计模式分为三⼤类:
创建型模式,共五种:
⼯⼚⽅法模式
抽象⼯⼚模式
单例模式
建造者模式
原型模式。
结构型模式,共七种:
适配器模式
装饰器模式
代理模式
外观模式
桥接模式
组合模式
享元模式。
⾏为型模式,共⼗⼀种:
策略模式
模板⽅法模式
观察者模式
迭代⼦模式
责任链模式
命令模式
备忘录模式
状态模式
访问者模式
中介者模式
解释器模式。
其实还有两类:并发型模式和线程池模式。⽤⼀个图⽚来整体描述⼀下:
⼆、设计模式的六⼤原则
总原则:开闭原则(Open Close Principle)
开闭原则就是说对扩展开放,对修改关闭。在程序需要进⾏拓展的时候,不能去修改原有的代码,⽽是要扩展原有代码,实现⼀个热插拔的效果。所以⼀句话概括就是:为了使程序的扩展性好,易于维护和升级。想要达到这样的效果,我们需要使⽤接⼝和抽象类等,后⾯的具体设计中我们会提到这点。
1、单⼀职责原则
不要存在多于⼀个导致类变更的原因,也就是说每个类应该实现单⼀的职责,如若不然,就应该把类拆分。
2、⾥⽒替换原则(Liskov Substitution Principle)
⾥⽒代换原则(Liskov Substitution Principle LSP)⾯向对象设计的基本原则之⼀。⾥⽒代换原则中说,任何基类可以出现的地⽅,⼦类⼀定可以出现。LSP是继承复⽤的基⽯,只有当衍⽣类可以替换掉基类,软件单位的功能不受到影响时,基类才能真正被复⽤,⽽衍⽣类也能够在基类的基础上增加新的⾏为。⾥⽒代换原则是对“开-闭”原则的补充。实现“开-闭”原则的关键步骤就是抽象化。⽽基类与⼦类的继承关系就是抽象化的具体实现,所以⾥⽒代换原则是对实现抽象化的具体步骤的规范。—— From Baidu 百科
历史替换原则中,⼦类对⽗类的⽅法尽量不要重写和重载。因为⽗类代表了定义好的结构,通过这个规范的接⼝与外界交互,⼦类不应该随便破坏它。
3、依赖倒转原则(Dependence Inversion Principle)
这个是开闭原则的基础,具体内容:⾯向接⼝编程,依赖于抽象⽽不依赖于具体。写代码时⽤到具体类时,不与具体类交互,⽽与具体类的上层接⼝交互。
4、接⼝隔离原则(Interface Segregation Principle)
这个原则的意思是:每个接⼝中不存在⼦类⽤不到却必须实现的⽅法,如果不然,就要将接⼝拆分。使⽤多个隔离的接⼝,⽐使⽤单个接⼝(多个接⼝⽅法集合到⼀个的接⼝)要好。
5、迪⽶特法则(最少知道原则)(Demeter Principle)
就是说:⼀个类对⾃⼰依赖的类知道的越少越好。也就是说⽆论被依赖的类多么复杂,都应该将逻辑封装在⽅法的内部,通过public⽅法提供给外部。这样当被依赖的类变化时,才能最⼩的影响该类。
最少知道原则的另⼀个表达⽅式是:只与直接的朋友通信。类之间只要有耦合关系,就叫朋友关系。耦合分为依赖、关联、聚合、组合等。我们称出现为成员变量、⽅法参数、⽅法返回值中的类为直接朋友。局部变量、临时变量则不是直接的朋友。我们要求陌⽣的类不要作为局部变量出现在类中。
6、合成复⽤原则(Composite Reuse Principle)
原则是尽量⾸先使⽤合成/聚合的⽅式,⽽不是使⽤继承。
本⽂参考:
设计模式的具体内容介绍:
单例模式的几种实现方式参考blog.csdn/jiyang_1/article/details/50110931
参考blog.csdn/dean_hu/article/details/71195133
练习参考blog.csdn/Wu_Ming0821/article/details/51838078,靠谱
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论