设计模式|学习笔记

创建型模式

简单工厂模式

概括:一个工厂负责生产Product基类派生出的所有子类
例子:登录验证,通过LoginManager生产具体的登录实例(继承于Login公共类,重写verify方法)
类图

工厂方法模式

概括:每个具体的工厂都负责生产一个具体的产品
例子:待办和闹钟都派生于同一个todo基类,分别由待办工厂和闹钟工厂生产产品
类图

抽象工厂模式

概括:有多种产品,且可以划分出多种产品族,每个产品族由指定工厂生产
例子:苹果和华为公司都有手机和平板产品,由产品族可以划分出手机工厂和平板工厂
类图

建造者模式

概括:Director类持有具体的Builder对象,并通过对外封装建造方法,完成对具体产品的建造
例子:Android的AlertDialog简化了建造者模式,Builder同时承担了Director的职能,直接通过设置参数最后建造产品
类图

单例模式

懒汉式

线程非安全
线程安全
方法上单加 synchronized(不高效)
双重检验锁(volatile + 内部synchronized)

饿汉式(一般情况)

普通实现 static final
枚举实现
静态内部类(推荐)static nested class
类图

结构型模式

装饰者模式

概括:装饰者模式的特点是在不改变原有对象的基础上,将功能附加到对象上;提供了比继承更有弹性的替代方案。可以提供一层包裹一层的装饰模式(一层一层叠buff)。
和适配器模式区别:理想的装饰者模式在对被装饰对象进行功能增强的同时,要求具体构件角色、装饰角色的接口与抽象构件角色的接口完全一致。而适配器模式则不然,一般而言,适配器模式并不要求对源对象的功能进行增强,但是会改变源对象的接口,以便和目标接口相符合。
类图

外观模式

概括:通过外观模式有效实现客户端和子系统的解耦,有选择性地暴露对外方法,不关心内部细节
类图

代理模式

概括:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。
类图

适配器模式

无限适配,拥抱变化 (如果不必要的话直接重构,尽量不使用)

类适配器

概括:Adapter类将Adaptee和Target接口衔接起来,使得支持新的方法
例子:Android中的RecyclerView的适配器
类图

对象适配器

概括:新适配器持有基类适配器的引用,并实现了拓展接口,委派基类
类图

缺省适配器

当不需要全部实现接口提供的方法时,可先设计一个抽象类实现接口,并为该接口中每个方法提供一个默认实现(空方法),那么该抽象类的子类可有选择地覆盖父类的某些方法来实现需求,它适用于一个接口不想使用其所有的方法的情况。

行为型模式

命令模式

概括:命令模式是对命令的封装。命令模式把发出命令的责任和执行命令的责任分割开, 委派给不同的对象。
类图

迭代器模式

概括:迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。把游走的任务放在迭代器上,而不是聚合上。这样简化了聚合的接口和实现,也让责任各得其所。
类图

观察者模式

概括:观察者模式是对象的行为模式,又叫发布-订阅(Publish/Subscribe)模式、模型-视图(Model/View)模式、源-监听器(Source/Listener)模式或从属者(Dependents)模式。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
类图

策略模式

概括:策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。
类图

模板方法模式

概括:模板方法模式是类的行为模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑有不同的实现。这就是模板方法模式的用意。
类图

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值