设计模式-简介

23种设计模式

分类及定义参考《设计模式 可复用面向对象软件的基础》

分类

创建型(5):工厂方法、抽象工厂、单例、创建者(生成器)、原型模式。

结构型(7):适配器、桥接、组合、代理、装饰者、外观、享元。

行为型(11):解释器、模板方法、责任链、命令、迭代器、中介者、备忘录、观察者、状态、策略、访问者。

《设计模式 可复用面向对象软件的基础》中创建者为生成器,单例为单件。

定义

IDNameDesc
1工厂方法创建对象的接口,由子类决定将哪个类实例化。使一个类的实例化延迟到子类
2抽象工厂创建一系列相关或相互依赖对象的接口,而无需指定具体的类
3单例保证一个类只有一个实例,并提供一个全局访问点
4原型原型实例指定创建对象的种类,并通过拷贝这个原型创建新的对象
5创建者将复杂对象的构建过程和表示分开,使得同样的构建过程可以创建不同的表示
---
6适配器将类的接口转变为客户希望的另一个接口,使原来由于接口不兼容不能在一起工作的类可以在一起工作
7桥接将抽象部分和实现部分分离,使他们都可以独立的变化
8组合将对象组合成树形结构,以表示“部分-整体“的层次结构。使得对单个对象和复杂对象的使用具有一致性
9代理为其他对象提供一个代理,以控制对这个对象的访问
10装饰者动态地给对象添加额外的职责,比生成子类方式更加灵活
11外观为子系统的一组接口提供一个统一的界面。定义了一个高层接口,使子系统更加容易使用
12享元通过共享技术有效地支持大量细粒度对象
---
13解释器给定一个语言,定义它的文法的一种表示,并定义一个解释器,该解释器使用该表示解释该语言
14模板方法定义一个操作的算法的骨架,将一些步骤的实现延迟到子类。子类可以不改变算法结构,就能重新定义某些步骤
15责任链将请求的发送者和接受者解耦,使多个接收者都有机会处理请求。可以让多个对象组成一条链,让请求沿着该链传递,直到有一个对象处理他为止
16命令将一个请求封装成一个对象,这样就可以用不同的请求对客户进行参数化;对请求排队、记录请求日志、支持可取消的操作等
17中介者用一个对象封装一系列的对象交互。使对象间无需显示的调用,从而解耦,并且可以独立地修改对象间的交互
18迭代器提供一个顺序访问聚合对象内部元素的方法,而无需暴露对象的内部表示
19观察者定义对象间的一种一对多的依赖关系,从而使一个对象发生改变时,所有依赖他的对象都能得到通知,并自动更新
20备忘录在不破坏封装性的前提下,捕获对象的内部状态,并在外部进行保存。以后就可以将对象恢复到保存的状态
21状态在对象的内部状态发生变化时,允许对象改变他的行为。对象看起来好像修改了他所属的类
22策略定义一系列算法,将它们一个个封装起来,并使它们可以相互替换。算法的变化独立于使用它的客户
23访问者表示一个作用于某对象结构中各个元素的操作。可以在不改变各元素类的前提下可以定义作用于这些元素的新操作

单例(Singleton)模式:某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式。
建造者(Builder)模式:将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。
代理(Proxy)模式:为某对象提供一种代理以控制对该对象的访问。即客户端通过代理间接地访问该对象,从而限制、增强或修改该对象的一些特性。
桥接(Bridge)模式:将抽象与实现分离,使它们可以独立变化。它是用组合关系代替继承关系来实现,从而降低了抽象和实现这两个可变维度的耦合度。
外观(Facade)模式:为多个复杂的子系统提供一个一致的接口,使这些子系统更加容易被访问。
命令(Command)模式:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。
访问者(Visitor)模式:在不改变集合元素的前提下,为一个集合中的每个元素提供多种访问方式,即每个元素有多个访问者对象访问。
解释器(Interpreter)模式:提供如何定义语言的文法,以及对语言句子的解释方法,即解释器。

6大原则

开闭原则

里氏代换原则

接口隔离原则

依赖倒转原则

迪米特法则,最少知道原则

合成复用原则

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值