设计模式 0.设计模式介绍汇总

0.设计模式介绍汇总

创建型模型(Creational Patterns)

模式名称定义简单说明学习难度使用频率
简单工厂模式 (Simple Factory)根据传人的参数即可返回所需的对象,而不需要知道具体类的类名根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个公共的父类和公共的方法。简单工厂模式不属于GoF设计模式★★☆☆☆★★★☆☆
工厂方法模式 (Factory Method)定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式使一个类的实例化延迟到其子类将某一类对象的创建过程封装在单独的类中,通过引人抽象层的方式来使得对象的创建和使用更为灵活★★☆☆☆★★★★★
抽象工厂模式 (Abstract Factory)提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类在一个类中可以创建多个不同类型的对象,这些对象所对应的类型都源于抽象层,使得系统具有极佳的扩展性和灵活性★★★★☆★★★★★
建造者模式 (Builder)将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示一步一步构造一个由多个部分组成的复杂对象★★★★☆★★☆☆☆
原型模式 (Prototype)用原型实例指定创建对象的种类,并且通过复制这个原型来创建新的对象通过复制已有对象创建出相似的其他对象★★★☆☆★★★☆☆
单例模式 (Singleton)保证一个类仅有一个实例,并提供一个访问它的全局访问点控制系统中所创建的对象实例的个数★☆☆☆☆★★★★☆

结构型模型(Structural Patterns)

模式名称定义简单说明学习难度使用频率
适配器模式 (Adapter Pattern)将一个类的接口转换成用户希望的另一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作使原本不兼容的事物能够协同工作,而无须修改现有事物的内部结构★★☆☆☆★★★★☆
桥接模式 (Bridge Pattern)将抽象部分与实现部分分离,使它们都可以独立地变化当事物存在两个独立变化的维度时,将两个变化因素抽取出来形成高层次的关联关系,使原本复杂的类继承结构变得相对简单,极大减少系统中类的个数★★★☆☆★★★☆☆
组合模式 (Composite Pattern)将对象组合成树形结构以表示."部分一整体"的层次结构。它使得客户对单个对象和复合对象的使用具有一致性通过面向对象技术来实现对系统申存在的容器对象和叶子对象进行统一操作,且客户端无须知道操作对象是容器还是其成员★★★☆☆★★★★☆
装饰模式 (Decorator Pattern)动态地给一个对象添加一些额外的职责,就扩展功能而言,它比生成子类方式更为灵活不使用继承而通过关联关系来调用现有类中的方法,达到复用的目的,并使得对象的行为可以灵活变化★★★☆☆★★★☆☆
外观模式 (Facade Pattern)为子系统中的一组接口提供一个统一的人口,定义一个高层接口,这个接口使得这一子系统更加容易使用为复杂的子系统提供一个统一的入口.简化客户端对多个子系统的访问★☆☆☆☆★★★★★
享元模式 (Flyweight Pattern)运用共享技术有效地支持大量细粒度的对象通过共享技术实现对象的重用,大幅度节约系统的内存,该模式关心系统的性能与资源利用情况★★★★☆★☆☆☆☆
代理模式 (Proxy Pattern)为其他对象提供一个代理以控制对这个对象的访问当不能直接访问一个对象时,通过一个代理对象间接访问它★★★☆☆★★★★☆

行为型模型(Behavioral Patterns)

模式名称定义简单说明学习难度使用频率
职责链模式 (Chain of Responsibility Pattern)为解除请求的发送者和接收者之间耦合,而使多个对象都有机会处理这个请求。将这些对象连成一条链,并沿着这条链传该请求,直到有一个对象处理它将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象(下家)★★★☆☆★★☆☆☆
命令模式 (Command Pattern)将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可取消的操作将请求的发送者与请求的接收者分离,通过抽象编程的方式,使得相同的请求发送者可以作用于不同的请求接收者★★★☆☆★★★★☆
解释器模式 (Interpreter Pattern)定义语言的文法,并且建立一个解释器来解释该语言中的句子自定义一个新的编程语言,该语言有一套自己的语法规范,如关键字和运算符等★★★★★★☆☆☆☆
迭代器模式 (Iterator Pattern)提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部表示通过一个专门的对象来对聚合对象进行遍历,而不需要直接操作聚合对象★★★☆☆★★★★★
中介者模式 ( Mediator Pattern)用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互引入一个中间对象,使系统中原有对象两两之间的复杂交互关系简化为与中间对象的交互,将一个网状结构重构为一个星形结构★★★☆☆★★☆☆☆
备忘录模式 (Memento Pattern)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到保存的状态提供一个可以后悔的机制,使得对象可以恢复到某一个历史状态★★☆☆☆★★☆☆☆
观察者模式 (Observer Pattern)定义对象间的一种一对多的依赖关系,以便当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并自动刷新一个对象的行为将影响到一个或多个其他对象的行为★★★☆☆★★★★★
状态模式 (State Pattern)允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它所属的类对象状态不同时其行为也不相同,且对象的状态可以发生转换★★★☆☆★★★☆☆
策略模式 (Strategy Pattern)定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法的变化可独立于使用它的客户实现某功能存在多种方式,在不修改现有系统的基础上可以灵活选择或更换实现方式,也可以使用新的实现方式★☆☆☆☆★★★★☆
模板方法模式 (Template Method Pattern)定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤在父类中提供一个方法定义一个操作序列,而将具体操作的实现放在子类中★★☆☆☆★★★☆☆
访问者模式 (Visitor Pattern)表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定文作用于这些元素的新操作存在多种类型的对象可以访问某个聚合结构中不同类型的元素对象,不同类型的对象对于不同元素对象可以使用不同的访问方法★★★★☆★☆☆☆☆
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值