what is Design pattern???
是一套反复被使用的、经过分类编目的、家喻户晓的、代码设计经验的总结。
它是 软件工程的一块基石。
“ 设计模式是软件工程中一种通用的,可复用的一种解决方案,它是一种解决问题的通用模板。”
传送门Transfer door:design-pattern-intro
模式 ??Pattern??
通俗来讲就是在某种应用场景下,针对某种或某类问题的通用解决方法或方案。
Why???
是为了可提高代码的重用性、让代码更加容易被理解、提高代码的可靠性。
目标就是管理变化,提高复用
- 代码重用性
- 增强可读性
- 可扩展性
- 呈现高内聚,低耦合特性
核心
核心是封装变化
七大原则
- 单一职责原则
- 开放封闭原则(开闭原则)
- 依赖倒置原则
- 里氏替换原则
- 合成服用原则
- 接口隔离原则
- 迪米特法则(最少知道原则)
单一职责原则
-
是针对实现类的一种设计模式
-
通俗来说,一个类只**负责一件事**,而不是变成万能的,**专一**就好。
-
一个类所分配的职责(方法)越多,它的可复用程度越低(被复用的可能性越小),
-
–关键词:
专一
做好一件事
-
解耦,降低耦合度,增强内聚性
开放封闭原则
-
就是说,对于扩展是开放的,对于修改是关闭的。
-
代码如需进行修改,在不修改源码的情况下,扩展新功能,实现热插拔的效果
-
该原则说明了 是程序有更好的可扩展性,也便于维护升级。
-
抽象化是开闭原则的关键,要达到该原则的效果,需要使用
接口与抽象类
依赖倒置原则
- 抽象不该依赖细节,细节应该以来抽象,而也就是说,是面向接口编程,而不是实现类。
- 细节多变化,而抽象往往稳定得多所以以抽象作为框架作为合适。抽象类/接口制定相关规范,具体的实现操作/任务交给实现类来完成。
里氏替换原则
子类不应该随意继承父类的方法,继承/泛化是一种极度的高耦合表现。
- 追求的是 在任何使用了父类 实例的地方,都可以使用子类实例来代替
合成复用原则
总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
相关资源
设计模式相关的网站
-
Wiki Page for Design Patterns - 以一种非常通用的方式检查设计模式。
-
Java Programming/Design Patterns - 一篇关于设计模式的好文章。
-
The JavaTM Tutorials - 该 Java 教程是为那些想用 Java 编程语言创建应用程序的编程人员提供的实用指南。
-
JavaTM 2 SDK, Standard Edition - JavaTM 2 SDK, Standard Edition 的官网。
相关书籍
-
Head First设计模式
-
设计模式:可复用面向对象软件的基础
-
图解Java多线程设计模式
-
Python设计模式 第2版
-
Learning PHP设计模式
References
- 设计模式之七大原则-博客园
- 设计模式的七大原则-
- 图文详解 23 种设计模式-微信公众号
- design-pattern-菜鸟教程www.runoob.com