目录
设计模式是什么?
设计模式(Design Pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,使用设计模式是为了可重用代码、让代码更容易被他人理解并且保证代码可靠性。
设计模式的作用
(1)设计模式以一种标准的方式供广大开发人员使用,为开发者的沟通提供了一套机制,帮助开发者更好地明白和更清晰地描述一段被给出的代码。
(2)设计模式可以使人们更加方便简单复用成功的设计模式和结构。
(3)设计模式可以使人们深入理解面向对象的设计思想,提高软件的开发效率,节约设计成本。
设计模式的分类
1、创建型模式(Creational Pattern)
- 单例模式 Singleton Pattern
- 简单工厂模式 Simple Factory Pattern
- 工厂方法模式 Factory Method Pattern
- 抽象工厂模式 Abstract Factory Pattern
- 原型模式 Prototype Pattern
- 建造者模式 Builder Pattern
2、结构型模式(Structural Pattern)
- 适配器模式 Adapter Pattern
- 桥接模式 Bridge Pattern
- 组合模式 Composite Pattern
- 装饰模式 Decorator Pattern
- 外观模式 Façade Pattern
- 享元模式 Flyweight Pattern
- 代理模式 Proxy Pattern
3、行为型模式(Behavioral Pattern)
- 职责链模式 Chain of Responsibility Pattern
- 命令模式 Command Pattern
- 解释器模式 Interpreter Pattern
- 迭代器模式 Iterator Pattern
- 中介者模式 Mediator Pattern
- 备忘录模式 Memento Pattern
- 观察者模式 Observer Pattern
- 状态模式 State Pattern
- 策略模式 Strategy Pattern
- 模板方法模式 Template Method Pattern
- 访问者模式 Visitor Pattern
重构
重构(Refactoring)就是通过调整程序代码改善软件的质量、性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性。
重构是设计模式的实现基础以及实现目的,也就是说,我们通过重构来获得设计模式,同时我们通过重构来使用设计模式。
其中,重构有几个技巧:
- 静态 --> 动态
- 早绑定 --> 晚绑定
- 继承 --> 组合
- 编译时依赖 --> 运行时依赖
- 紧耦合 --> 松耦合
其实经过思考可以得出结论:以上说的这些技巧其实在本质上说的是同一件事情。
面向对象设计原则
对于面向对象软件系统的设计而言,在支持可维护性的同时,提高系统的可复用性是一个至关重要的问题,如何同时提高一个软件系统的可维护性和可复用性是面向对象设计需要解决的核心问题之一。在面向对象设计中,可维护性的复用是以设计原则为基础的。每一个原则都蕴含一些面向对象设计的思想,可以从不同的角度提升一个软件结构的设计水平。
面向对象设计原则为支持可维护性复用而诞生,这些原则蕴含在很多设计模式中,它们是从许多设计方案中总结出的指导性原则。面向对象设计原则也是我们用于评价一个设计模式的使用效果的重要指标之一,在设计模式的学习中,大家经常会看到诸如“XXX模式符合XXX原则”、“XXX模式违反了XXX原则”这样的语句。
7种常用的面向对象设计原则
设计原则名称 | 定 义 |
单一职责原则 (Single Responsibility Principle, SRP) | 一个类只负责一个功能领域中的相应职责 |
开闭原则 (Open-Closed Principle, OCP) | 软件实体应对扩展开放,而对修改关闭 |
里氏代换原则 (Liskov Substitution Principle, LSP) | 所有引用基类对象的地方能够透明地使用其子类的对象 |
依赖倒转原则 (Dependence Inversion Principle, DIP) | 抽象不应该依赖于细节,细节应该依赖于抽象 |
接口隔离原则 (Interface Segregation Principle, ISP) | 使用多个专门的接口,而不使用单一的总接口 |
合成复用原则 (Composite Reuse Principle, CRP) | 尽量使用对象组合,而不是继承来达到复用的目的 |
迪米特法则 (Law of Demeter, LoD) | 一个软件实体应当尽可能少地与其他实体发生相互作用 |
算法、设计模式、框架的概念区分
1、算法
概念:算法就是解决某一类问题的策略机制
算法特征:用穷性、确切性、输入项、输出项、可行性
同一个问题可用不同算法解决,而不同算法解决同一问题时的质量优劣不同,而这将影响到程序的效率。一个算法的评价主要从时间复杂度和空间复杂度来考虑。
2、设计模式概念:是面向对象中问题的解决方案。算法不是设计模式,因为算法只是解决问题,并没有对问题进行设计。
设计模式格式的四个主要部分:
模式名称、问题(即模式使用场合)、解决方案、效果
3、框架
概念:所谓的Java框架,简单理解是一个可复用的设计构件,它规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系、责任分配和控制流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文(Context)关系。个人理解:框架就是半成品项目,已经完成了项目的底层开发基础搭建,可以在其基础上开发。
框架的作用:实际开发中,可以让使用者减少很多重复的代码、让代码的结构更加清晰,耦合度更低,后期维护方便。
至此,设计模式介绍完毕,由于作者水平有限难免有疏漏,欢迎留言纠错。