文章目录
前言
谁适合阅读此系列文章?
学习设计模式,需要具有一定的软件开发经验。不推荐刚入门的新手学习,因为新手的目的是实现功能,无论代码写得多么糟糕。具备一定经验后,对自己以往写的代码不满意,想要去重构去优化代码时,才能体会到设计模式的重要性,也更能理解它。
本系列文章将结合我学习和工作中实践经验来讲解各种模式的应用场景。
一、设计模式简介
设计模式(Design pattern)是软件编码的一种最佳实践,是软件重构的解决方案。它帮助我们在面向对象编程过程中解决一般性的问题,是软件开发过程中不断总结的方法。设计模式总共有23种,外加J2EE中所提供的8种模式。
二、设计模式的四种类型
1.创建型模式
- 工厂模式(FactoryPattern)
- 抽象工厂模式(AbstractFactoryPattern)
- 建造者模式(BuilderPattern)
- 原型模式(PrototypePattern)
- 单例模式(SingletonPattern)
2.结构型模式
- 适配器模式(AdapterPattern)
- 过滤器模式(FilterPattern)
- 桥接模式(BridgePattern)
- 组合模式(CompositePattern)
- 装饰者模式(DecoratorPattern)
- 外观模式(FacadePattern)
- 享元模式(FlyweightPattern)
- 代理模式(ProxyPattern)
3.行为型模式
- 责任链模式(ChainofResponsibilityPattern)
- 命令模式(CommandPattern)
- 迭代器模式(IteratorPattern)
- 中介者模式(MediatorPattern)
- 备忘录模式(MementoPattern)
- 观察者模式(ObserverPattern)
- 状态模式(StatePattern)
- 策略模式(StrategyPattern)
- 模板方法(TemplatePattern)
- 访问者模式(VisitorPattern)
- 空对象模式(NullObjectPattern)
- 解释器模式(InterpreterPattern)
4.J2EE模式
- MVC模式(MVCPattern)
- 业务代表模式(BusinessDelegatePattern)
- 组合实体模式(CompositeEntityPattern)
- 数据访问对象模式(DataAccessObjectPattern)
- 前端控制器模式(FrontControllerPattern)
- 拦截过滤器模式(InterceptingFilterPattern)
- 服务定位器模式(ServiceLocatorPattern)
- 传输对象模式(TransferObjectPattern)
三、面向对象的七大原则
在面向对象编程中,OOP有继承,封装,抽象,多态四大特性,这些特性在设计模式中不断总结得出了以下七大原则
1. 单一职责原则
一个类只有一个职责
,降低类的复杂度。
在开发过程中,如果不受约束,我们会将前端视图、业务逻辑处理、连接数据库等操作都写在一个类里,这违反了单一职责原则,通常来讲,一个类应该只负责一个职责。
2. 接口隔离原则
一个类对另一个类的依赖,应该建立在最小的接口上,接口需要最小化拆分
,类不应该实现不需要实现的接口。
3. 开放封闭原则
类、方法、模块等应该对扩展开放,对修改关闭
。
在开发过程初期时,我们应该创建抽象来隔离以后发生的变化,后期通过扩展抽象的行为来实现变化,而不是修改已有的代码来实现变化。
4. 里氏替换原则
子类必须能够替换掉它们的父类
。在软件里面,把父类替换成它的子类,程序行为不应发生变化。
5. 依赖倒置原则
高层模块不应该依赖底层模块,两者应该依赖抽象/接口,抽象不应该依赖细节,细节应该依赖抽象,就是我们工作中常讲的针对接口编程,而不要针对实现类编程
。
6. 最少知道原则(迪米特原则)
一个对象应该对其他对象保持最少的了解
。在类的结构设计上,每个类都应当尽量降低成员的访问权限,降低类与类之间的耦合度。
7. 合成复用原则
简单地说,就是多组合少继承
,尽量使用组合服用,降低继承复杂度。