设计模式(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
依赖倒置原则
常用设计模式概况:
[gallery columns=”1” size=”full” ids=”9642”]
创建型模式(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
有不少的人说程序= 算法+ 数据结构,但个人认为程序 = 架构 + 设计模式 + 数据结构与算法 接下来将一起对本文中面向对象原则及设计模式进行详细的学习,同时我也会不断更新算法与数据结构相关的知识,让我们一起学习起来