设计模式
设计模式(Design Patterns),旨在软件设计(可重用的面向对象软件的要素)中,被反复使用的一种代码设计经验。设计模式旨在简化代码量、降低耦合度、高效使用可重用代码,提高代码可拓性和可维护性。
3V3H概念:
3V: Voluem(海量),Variety(多样)、Velocity(实时)
3H: High concurrency(高并发)、High performance(高性能)、High development(高可拓)
设计模式的由来:
设计模式这个术语是由上个世纪90年代Erich Gamma、Richard Helm、Raplh Johnson和Jonhn Vlissides四人总结提炼而出。并编写了Design_Patterns(设计模式)一书,他们四位统称为GOF(俗称四人帮)。
设计模式:即 将常使用的设计思想提炼出一个个模式,然后给每个模式命名,这样在使用的时候更方便交流。GOF把23个常用模式分为创建型模式、结构型模式和行为型模式三类
为何采用设计模式思想?(请注意思想二词!!!)
设计模式并非直接用来完成编码,而是描述在各种不同情况下,要怎么解决问题的一种方案、一种思想
面向对象设计模式常以类或对象来描述其中的关系和相互作用,但不涉用来完成应用程序的特定类别或对象。设计模式能使不稳定依赖于相对稳定、具体依赖于相对抽象,避免会引起麻烦的紧耦合,以增强软件设计面对并适应变化的能力。
学习设计模式,关键是学习设计思想,不为设计而设计,需合理平衡设计模式的复杂度和灵活性。
须知设计模式并不是万能的!!!
设计模式符合什么原则?
开闭原则(Open Colse Principle):
软件对拓展开发,对修改关闭。
理解:在增加新功能的时候,能不改代码就尽量不要改,如果只增加部分代码便可完成新功能,即是最好。
里氏替换原则(Liskov Substitution Principle):
面向对象设计原则(六大原则)
理解:若调用父类方法可成功,即调用成调用其子类亦可成功
面向对象六大设计原则:
英文名称 | 缩写 | 中文名称 |
Single Responsibility Principle | SRP | 单一职责原则 |
Open Close Principle | OCP | 开闭原则 |
Liskov Substitution Principle | LSP | 里氏替换原则 |
Law of Demeter ( Least Knowledge Principle) | LoD | 迪米特法则(最少知道原则) |
Interface Segregation Principle | ISP | 接口分离原则 |
Dependency Inversion Principle | DIP | 依赖倒置原则 |
常用设计模式概况:
创建型模式(Creational Patterns):
如何创建对象? 核心思想是要把对象的创建和使用分离,从而使得二者可以相对独立地变换。这些模式更加关注对象之间的创建
- 单例模式:Singleton Pattern
- 多例模式:Multiton Pattern
- 工厂模式:Factory Pattern
- 静态工厂模式:Static Factory Pattern
- 抽象工厂模式:Abstract Factory Pattern
- 原型模式:Prototype Pattern
- 建造者模式:Builder Pattern
- 对象池模式:Pool Pattern
结构型模式(Structural Patterns):
如何组合各种对象,以便于更好、更灵活的结构?面向对象的继承机制虽提供了基本的子类继承与拓展父类的功能,但结构型模式却不仅是简单的继承,还有更多的通过组合,使之与运行期的动态组合实现更加灵活的功能。这些模式更加关注对象之间的组合
- 组合模式(Composite)
- 桥接模式(Bridge)
- 适配器模式(Adapter)
- 过滤器模式(Filter、Criteria Pattern
- 装饰模式(Decorator)
- 外观模式(Facade)
- 门面模式:Facade
- 享元模式(Flyweight)
- 代理模式(Proxy)
- 数据映射模式:Data Mapper
- 依赖注入模式:Dependency Injection
- 流接口模式:Fluent Interface
- 注册模式:Registry
行为模式(Behavioral Patterns):
行为模式主要涉及对象与函数(算法)之间的职责分配,通过对象及函数灵活组合。此种模式更加关注对象之间的通信
责任链模式:Chain of Responsibility Pattern
命令模式:Command Pattern
解释器模式:Interpreter Pattern
迭代器模式:(Iterator Pattern
中介者模式:Mediator Pattern
备忘录模式:Memento Pattern
观察者模式:Observer Pattern
状态模式:State Pattern
空对象模式:Null Object Pattern
策略模式:Strategy Pattern
模板模式:Template Pattern
访问者模式:Visitor Pattern
规格模式:Specification
有不少的人说程序= 算法+ 数据结构,但个人认为程序 = 架构 + 设计模式 + 数据结构与算法
接下来将一起对本文中面向对象原则及设计模式进行详细的学习,同时我也会不断更新算法与数据结构相关的知识,让我们共同学习,一起进步吧