本文主要是介绍浅聊设计模式之简介,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
简介
设计模式简单说就是由长期从事软件开发的大佬警告试验和错误总结出来的,在我们面对一一些常见的问题或则和场景的时候,可以反复使用一种解决问题的模式。
设计模式是是一套被反复使用,多数人知晓的,警告分类编目的,代码设计的总结经验。记住其是一种设计思维,而不是某种编程语言特有,比如java ,c++都可以使用这些模式。而对设计模式,主要就是理解其意义,以及场景。有点像是在使用一些物理公式的时候,直接进行套用。但是其又不是各自独立的,有时候会在一起交叉使用。
GOF
在 1994 年,由 Erich Gamma、Richard Helm、Ralph Johnson 和 John Vlissides 四人合著出版了一本名为 Design Patterns - Elements of Reusable Object-Oriented Software(中文译名:设计模式 - 可复用的面向对象软件元素) 的书,该书首次提到了软件开发中设计模式的概念。
四位作者合称 GOF(四人帮,全拼 Gang of Four)。他们所提出的设计模式主要是基于以下的面向对象设计原则。
- 对接口编程而不是对实现编程。
- 优先使用对象组合而不是继承。
这个只是了解即可,毕竟这四个大佬,让设计模式这个概念真正的开始被it引入。
23种设计模式
《设计模式 - 可复用的面向对象软件元素》 四个大佬联合的出版的书中,提到了23种设计模式。基础囊括了我们常见的很多模式,但绝对不是全部模式。比如:j2ee设计模式就不在23种模式种包含。
设计模式有两种分类方式,即根据模式的目的来分和根据模式的作用范围来分。
根据目的来分
根据目的来分可以分三类
-
创建模式:
这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。
-
结构型模式:
这些设计模式关注类和对象的组合。继承的概念被用来组合接口和定义组合对象获得新功能的方式。
-
行为型模式:
这些设计模式特别关注对象之间的通信。
而三类各自包含的模式有
创建模式:
类别 | 模式 |
---|---|
创建模式 | 单例模式(Singleton Pattern) |
工厂模式(Factory Pattern) | |
抽象工厂模式(Abstract Factory Pattern) | |
建造者模式(Builder Pattern) | |
原型模式(Prototype Pattern) |
结构型模式:
分类 | 模式 |
---|---|
结构型模式 | 代理模式(Proxy Pattern) |
适配器模式(Adapter Pattern) | |
桥接模式(Bridge Pattern) | |
过滤器模式(Filter、Criteria Pattern) | |
组合模式(Composite Pattern) | |
装饰器模式(Decorator Pattern) | |
外观模式(Facade Pattern) | |
享元模式(Flyweight Pattern) |
行为型模式
分类 | 模式 |
---|---|
行为型模式 | 责任链模式(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) |
根据作用范围分
这种分类可以分类模式和对象模式。
-
类模式:
用于处理类与子类之间的关系,这些关系通过继承来建立,是静态的,在编译时刻便确定下来了。GoF中的工厂方法、(类)适配器、模板方法、解释器属于该模式。
-
对象模式:
用于处理对象之间的关系,这些关系可以通过组合或聚合来实现,在运行时刻是可以变化的,更具动态性。除了以上 4 种,其他的都是对象模式;
现在简单了解一些设计模式有哪些,后面会根据模式依次用代码演示(Java代码演示),先从常见的23模式开始弄,后面再补充一其他的模式。
这篇关于浅聊设计模式之简介的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!