............................................................设计模式.................................................
1.设计模式出现的reason:
目前软件开发存在的问题是:随着用户的需求不断发生变化,对软件开发工作人员的要求也就越来越高。要想尽量的满足用户需求的变化,需要依靠程序设计,让程序设计变得更加灵活。
于是程序设计人员总结出了一些面向对象的设计原则。
分别为:
1.单一职责原则(SRP)
:系统中的每个对象都应该只有一个单独的职责,所有对象关注的就是自身职责的完成。
每个类都应该只有一个职责,对外只能提供一种功能。
从而避免这个类庞大无比,难于维护。
2.开闭原则(OCP)
:一个对象对扩展开放,对修改关闭。也就是说对类的改动是通过增加代码进行的,而不是改动现有的代码。
如果开发人员写出了可以运行的代码,就不应该去改变它,而是要保证它能一直运行下去。
通常为了满足用户的新需求,需要修改或扩充原来的代码,这样造成的后果就是如果这个类中有一个功能需要修改,就有可能引起其他功能的变动,从而产生不可预知的后果。
3.依赖注入原则(DIP)
:如果一个类需要调用其他的类,就应该调用该类的接口或抽象类,而不是直接调用该类的实现类。
即要依赖于抽象,不要依赖于具体的实现。也就是针对接口编程,而不是针对实现编程。
4.里氏替换原则(LSP)
:在任何抽象类实现的地方都可以用它的实现类来代替,利用此原则更好的可以使用继承。
5.迪米特原则(LOD)
:一个对象应当对其他对象尽可能少的了解,从而能够降低各个对象之间的耦合,提高系统的可维护性。
通常各个模块之间相互调用时,都会提供一个统一的接口来实现,这样当一个模块内部功能发生改变时,不会影响其他模块的使用。
6.接口分离原则(ISP)
:一个接口只提供一种对外功能,不应该把所有的操作都封装到一个接口当中。
7.优先使用组合而不是继承原则(CARP)
:优先使用组合,而不是继承。
对于继承而言,父类的任何改变都可能影响子类的行为。因此使用组合,可以降低这种依赖关系。
综上所述:这些设计原则的核心思想就是尽量降低代码之间的依赖,从而能够灵活多变,适应用户需求的不断变化。即“高内聚,低耦合”的具体实现。
上述设计规则都是指理论,并不够具体。下面23种设计模式就是对以上设计原则的具体实现。
23种设计模式分为三种
一:创建型模式:
- 单例模式(Singleton)
- 简单工厂模式(Simple Factory)
- 工厂方法模式(Factory Method)
- 抽象工厂模式(Abstract Factory)
- 原型模式(Prototype)
- 创建者模式(Builder)
二:结构型模式
- 适配器模式(Adapter)
- 门面模式(Facade)
- 代理模式(Proxy)
- 合成模式(Composite)
- 享元模式(Flyweight)
- 装饰模式(Decorator)
- 桥模式(Bridge)
三:行为型模式
- 策略模式(Strategy)
- 迭代器模式(Iterator)
- 模板方法模式(Template Method)
- 中介者模式(Mediator)
- 访问者模式(Visitor)
- 职责链模式(Chain of Responsibility)
- 状态模式(State)
- 解释器模式(Interpreter)
- 观察者模式(Observer)
- 命令模式(Command)
- 备忘录模式(Mem)