白话-设计模式

2 篇文章 0 订阅

------------------- 23种设计模式分类 ----------------------

  • 创建型模式 (共5种):工厂方法模式 抽象工厂模式 建造者模式 单例模式 原型模式
  • 结构型模式 (共7种):适配器模式 桥接模式 ;装饰器模式 代理模式 ; 组合模式 外观模式 享元模式
  • 行为型模式 (共11种):策略模式 模板方法模式 责任链模式 观察者模式 迭代子模式 命令模式 状态模式 备忘录模式 访问者模式 中介者模式 解释器模式

------------------- 创建型 ----------------------

  • 简单工厂模式(静态工厂模式) :用一个专业类(工厂类)来负责一种产品的对象创建。它不属于23种设计模式之一,但它是工厂模式的基础。(多工厂模式)

  • 工厂方法模式:将工厂类抽象出一个接口,对象的创建方法延迟到工厂子类去实现。每一种产品都对应一个工厂子类。当新增一个产品类型时,新加对应的工厂子类即可,不再需要修改既有类。

  • 抽象工厂模式:当一个类别的产品还有多个系列区分时,按系列生产商品。

  • 建造者模式:当对象的创建比较复杂时,按步骤一块块创建,让创建过程模板化。

  • 原型模式:通过拷贝原型对象来创建新的对象 (克隆)
    注意:1 通过实现Cloneable 接口的原型模式在调用clone函数构造实例时并不一定比通过new 操作速度快,只有当通过new 构造函数 创建对象耗时时, clone 方式才能获得效率上的提升。
    2 通过clone 拷贝对象时,不会再执行构造方法,一些在构造函数需要初始化的对象使用clone 拷贝需要注意
    3 数值拷贝没有深浅拷贝之分,引用类型默认使用浅拷贝(影子拷贝),对于集合类型 一定要使用深拷贝。
    开发中,也建议使用深拷贝,避免操作副本时影响原始对象。

------------------- 结构型 ----------------------

适配器模式

已知两个不兼容的对象,将它们融合在一起。适配器模式把一个类的接口变换成客户端需要的另一种接口,从而使因接口不匹配而无法在一起工作的类能够在一起工作。
使用场景:
Android:ListView Adapter

桥接模式

定义:将两个维度变化的功能组合起来,目的是两个维度独立变化。
主要维度,附属维度,再将附属维度接口注入到主要维度所在对象。

适配器模式和桥接模式异同:
都是把两个对象组合起来配合工作。桥接模式的目标是分离,适配器模式的目标是合并。

装饰器模式(包装模式)

定义:不影响主流程的前提下,某个环节动态地给一个对象增加一些额外的职责。
目的是增加功能。
是继承关系的一种替代方案,但比生成子类灵活。

代理模式

定义:一个类代表另一个类的功能。
代理类实现相同的接口,持有一个真实对象的引用。

装饰器模式和代理模式异同:
都是当前对象无法胜任主功能,转给第三方对象来完成主功能。
装饰器模式目标是增强自身(第三方是我内部),代理模式 目标是找外部。

组合模式(Composite Pattern)

定义:将一组相似的对象看作一个单一的对象处理。
目的是减少数据类型。
使用场景:含有多个类似树形结构

外观模式

定义: 糅合功能,对外只提供一个入口。
使用场景:当访问流程比较复杂时,将流程封闭成一个接口,供外部使用。(流程型接口,一条龙服务)

享元模式

使用共享对象有效减少内存使用量。 (Map,pools)

------------------- 行为型 ----------------------

策略模式

IOC
定义:定义一系列的算法,并将每一个算法封装起来。通过选择策略类,执行不同的算法分支。核心是通过注入对象 改变行为。
使用场景:1 需要使用if-else或switch-case 选择具体分支,且分支之间有一个共同的行为。
2 需要封装多种同一类型的操作。
Android : 插值器;

模版方法模式

定义:在父类中设计主流程,实现各个小步骤,将不确定(共同)的步骤实现延伸到子类中去实现。
使用场景:封装流程;
Android: AsyncTask;

责任链模式

定义:当出现多个对象都可以处理同一个请求时,将这些对象连成一条链(初始化整个链),并沿着这条链逐步处理请求,完成后 获取结果。
使用场景:
Android: 事件分发 dispatchTouchEvent;

观察者模式

定义:定义对象间一种 一对多的依赖关系,当这个对象状态改变时 所有依赖它的对象都会得到通知。
使用场景:1 跨系统的消息交互,如消息队列,事件总线, 广播
Android: Adapter notifyDataSetChanged

命令模式
访问者模式

定义:利用双重分派机制,弥补java多态中的方法重载是静态化的不足(声明是什么类型,识别的就是什么类型,而不管真正的类型)。
使用场景:集合中有不同类型的对象,通过方法重载(形参),无法识别它们的具体类型

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值