写点什么

学设计模式前先了解下设计模式分类

发布于: 2021 年 01 月 23 日
学设计模式前先了解下设计模式分类

设计模式分类


在我们学习单独的设计模式之前先了解一下设计模式的分类,以便我们能够更系统的学习


设计模式起源:建筑师克里斯托佛·亚历山大在 1977/79 年编制了一本汇集设计模式的书,但是这种设计模式的思想在建筑设计领域里的影响远没有后来在软件开发领域里传播的广泛。


肯特·贝克和沃德·坎宁安在 1987 年,利用克里斯托佛·亚历山大在建筑设计领域里的思想开发了设计模式并把此思想应用在 Smalltalk 中的图形用户接口(GUI)的生成中。一年后埃里希·伽玛在他的苏黎世大学博士毕业论文中开始尝试把这种思想改写为适用于软件开发。与此同时 James Coplien 在 1989 年至 1991 年也在利用相同的思想致力于 C++的开发,而后于 1991 年发表了他的著作 Advanced C++ Programming Styles and Idioms。同年 Erich Gamma 得到了博士学位,然后去了美国,在那与 Richard Helm, Ralph Johnson ,John Vlissides 合作出版了《设计模式:可复用面向对象软件的基础》(Design s - Elements of Reusable Object-Oriented Software) 一书,在此书中共收录了 23 种设计模式。


这四位作者在软件开发领域里以“四人帮”(英语,Gang of Four,简称 GoF)而闻名,并且他们在此书中的协作导致了软件设计模式的突破。有时,GoF 也会用于代指《设计模式》这本书。


什么是设计模式:设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。每一个模式描述了一个在我们周围不断重复发生的问题以及该问题的解决方案的核心。


设计模式的本质:在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案。


设计模式的四个基本要素


  1. 模式名称( name):主要用来描述设计模式的问题、解决方案和效果。

  2. 问题(problem):描述了应该在何时使用该设计模式

  3. 解决方案(solution):描述了设计模式的组成成分,它们之间的相互关系及各自的职责和协作方式。

  4. 效果(consequences):描述了设计模式应用的效果及使用设计模式应该权衡的问题。


根据设计模式的性质可将其划分为三种类型


创建型(5)


  • 工厂方法模式(Factory Method)

  • 抽象工厂模式(Abstract Factory )

  • 单例模式(Singleton )

  • 建造者模式(Builder )

  • 原型模式(Prototype )


结构型(7)


  • 适配器模式(Adapter )

  • 桥接模式(Bridge )

  • 组合模式(Composite )

  • 装饰器模式(Decorator )

  • 外观模式(Facade )

  • 享元模式(Flyweight )

  • 代理模式(Proxy )


行为型(11)


  • 责任链模式(Chain of Responsibility )

  • 命令模式(Command )

  • 解释器模式(Interpreter )

  • 迭代器模式(Iterator )

  • 中介者模式(Mediator )

  • 备忘录模式(Memento )

  • 观察者模式(Observer )

  • 状态模式(State )

  • 策略模式(Strategy )

  • 模板模式(Template )

  • 访问者模式(Visitor )


其中最常用的模式


  • 抽象工厂模式(Abstract Factory )

  • 适配器模式(Adapter )

  • 组合模式(Composite )

  • 装饰器模式(Decorator )

  • 工厂方法模式(Factory Method)

  • 观察者模式(Observer )

  • 策略模式(Strategy )

  • 模板模式(Template )


后续文章会单独对每个设计模式进行单独的讲解和综合运用,请持续关注!


发布于: 2021 年 01 月 23 日阅读数: 67
用户头像

公众号:爱笑的小雨 2020.12.19 加入

还未添加个人简介

评论

发布
暂无评论
学设计模式前先了解下设计模式分类