GeekBand 设计模式总结

设计模式

参考硬啃设计模式对设计模式进行了简单的总结。


创建型(5种)

1: 简单工厂

  • 介绍:用一个静态方法,根据传入参数返回所需的对象
    Object newObject = ObjectBuilder.CreateObject(string type);
  • 类图
    简单工厂
  • 用途:简单工厂是管理new的最常见方法,避免重复new相同父类的对象

2: 单件模式

  • 介绍:单件通过在内存中唯一的Singleton保证了数据的唯一
  • 类图
    单例模式
  • 用途:需要一致地管理全局信息时,可考虑用单件模式

3: 工厂方法

  • 介绍:定义一个创建对象的接口,让子类(具体创建者)决定实例化哪个类型的对象。
  • 类图
    工厂方法
  • 用途:上图中用了相同的颜色来表示哪个工厂生产哪些产品,工厂方法目的是向对象使用者隐藏对象的创建过程与具体类型。生产一个的系列产品。

4: 抽象工厂

  • 介绍:定义一个接口,用于创建一系列相关或相互依赖的对象,而不需要指定它们的具体类型
  • 类图
    抽象工厂
  • 用途:有时候我们希望能得到一系列对象,不是一个对象,这时我们可考虑用抽象工厂,抽象工厂中有多个方法,分别得到不同的对象。一次生产多个不同产品。

5: 生成器模式

  • 介绍:抽象类Builder的责任是建立各组件,CreateComponent()方法不一定只有一个的,可根据需要添加多个。建立出来的组件可能是树形结构,Component与Leaf的关系就是表示这个意思。
  • 类图
    生成器模式
  • 用途:某些复杂对象要new出来时,往往需要先new出它的子对象,然后组装成进父对象中,这些子对象有时候甚至组成了“树”结构,这时候就需要生成器模式。生产有很多组件的对象。

6: 原型模式

  • 介绍:利用现成对象制作新的对象,被复制的对象,需要实现clone(克隆)接口:
    Soldier newSoldier = oldSoldier.Clone();
  • 类图
    原型模式
  • 用途克隆对象。

结构型(7种)

1: 桥模式

  • 介绍:两组功能分离并可以结合使用
  • 类图
    桥模式
  • 用途:需要将两组不同的功能组合来用时,可以考虑用“桥”将这两组功能组合起来。

2: 享元模式

  • 介绍:运用共享技术有效地支持大量“轻量级”的对象,使用享元模式时,我们只创建一个实例来管理大量的虚拟对象。
  • 类图
    享元模式
  • 用途:希望“面向对象”地处理大量实例,又不想内存消耗太大时,可考虑享元模式。实例间没有可“共享”的东西时,不适用享元模式。

3: 外观模式

  • 介绍:在原来复杂设计基础上增加了简单接口类,将常用的操作包装进去。。简单接口含有原来各类的引用,将各类常见操作写进各方法中。
  • 类图
    外观模式
  • 用途:同时提供复杂接口和简单接口,供调用者根据需要使用。

4: 装饰者模式

  • 介绍:被装饰者和装饰者实现了相同的接口。装饰者含有指向被装饰者的引用。被装饰者可以被多个装饰者装饰。新建一个装饰者,同时将它要装饰的对象传入。之后调用装饰者的方法。
    A_Decorator decoratorA = new A_Decorator (new Object1);
  • 类图
    装饰者模式
  • 用途:需要动态地将功能添加到对象上时,使用装饰者模式。不改变接口但要增强功能。

5: 组合模式

  • 介绍:所有节点,都被抽象成Component。如果节点能包含节点,这些节点就是Container。如果节点不能再包含节点,这些节点就是Leaf。
  • 类图
    组合模式
  • 用途:将任意对象组合成更复杂的对象,并且组合后可以再组合。如:Office软件可以做到将任意图形组合,并且组合后可以再组合。

6: 代理模式

  • 介绍:不希望某些类被直接访问。访问之前希望先进行一些预处理。希望对被访问的对象进行内存、权限等方面的控制。
  • 类图
    代理模式
  • 用途: 如果直接访问对象比较困难,或直接访问会给使用者或系统带来一系列问题。这样对于客户端(调用者)来说,就不需要直接与真实对象进行交互,解除了调用者与真实对象的耦合。代理要控制你的访问,同时让你的访问更舒服。

7: 适配器模式

  • 介绍:不改变老系统的情况下增加一些东西,使老系统满足新系统的接口要求,这就是适配器模式的思路。
  • 类图
    适配器模式
  • 用途:不改变功能但要改变接口。

行为型(11种)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值