随笔分类 - 设计模式
better design
摘要:Android的设计模式-设计模式的六大原则 https://www.cnblogs.com/NeilZhang/p/6515899.html 一句话总结23种设计模式则 创建型模式: Android的设计模式-单例模式 https://www.cnblogs.com/NeilZhang/p/797
阅读全文
摘要:开发过程中经常听到工厂这个词,其实根据个人经验,简单工厂用的是比较多的。工厂方法和抽象工厂是GoF23种设计模式中的一种,而我们常使用的简单工厂并不是一种设计模式,可以说是我们自己的一种俗称。 定义 简单工厂: 直接通过一个Factory类创建多个实体类的构造方式。 工厂方法: 一个抽象产品类,可以
阅读全文
摘要:定义 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。 在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,
阅读全文
摘要:定义 迭代器模式把在元素之间游走的责任交给迭代器,而不是聚合对象。这不仅让聚合的接口和实现变得更简洁,也可以让聚合对象更专注在它所应该专注的事情上面(也就是管理对象集合),而不必去理会遍历的事情。 模板 Iterator (迭代器接口) 一般会提供上图中Iterator三种接口方法。 Concret
阅读全文
摘要:定义 为其他对象提供一种代理,以控制对这个对象的访问。代理对象在客户端和目标对象之间起到中介的作用。(结构型) 如果不知道代理模式,可能大家对代理服务器都不叫熟悉。代替服务器代替请求者去发一起对另一个服务器的请求,他相当于请求的中间人。为什么要通过这个代理呢,那是因为客户端直接去访问服务器会被拒绝(
阅读全文
摘要:定义 用于创建重复的对象,同时又能保证性能。它属于创建型设计模式,它提供了一种创建对象的最佳方法。 模板 Prototype (原型) Product 角色负责定义用于复制现有实例来生成新实例的方法。在示例程序中,由 Product 接口扮演此角色。 ConcretePrototype(具体的原型)
阅读全文
摘要:定义 就是定义算法骨架的方法 具体的操作:在模板中直接实现某些步骤的方法,通常这些步骤的实现算法是固定的,而且是不怎么变化的,因此就可以当作公共功能实现在模板里面。 其实写设计模式的系列笔记就是一种模板方法,每篇文章的流程(目录)都是一样的,我实现了每个部分的具体细节。 模板 模板方法比较简单,第一
阅读全文
摘要:装饰模式 定义 装饰者模式又称为包装(wrapper)模式。装饰者模式对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 模板 抽象构件(Component)角色:给出一个抽象接口,以规范准备接受附加责任的对象。 具体构件(ConCreteComponent)角色:定义一个将要接受附加责任
阅读全文
摘要:定义 对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。 模板 状态模式包含以下主要角色。 环境(Context)角色:也称为上下文,它定义了客户感兴趣的接口,维护一个当前状态,并将与状态相关的操作委托给当前状态对象来处理。 抽象状态(Stat
阅读全文
摘要:定义 享元(Flyweight)模式的定义:运用共享技术来有効地支持大量细粒度对象的复用。它通过共享已经存在的又橡来大幅度减少需要创建的对象数量、避免大量相似类的开销,从而提高系统资源的利用率。 模板 1. FlyweightFactory享元工厂类:创建并管理享元对象,享元池一般设计成键值对 2.
阅读全文
摘要:适配器模式将某个类的接口转换成客户端期望的另一个接口表示,主的目的是兼容性,让原本因接口不匹配不能一起工作的两个类可以协同工作。其别名为包装器(Wrapper)。 简单地说,就是需要的东西就在面前,但却不能使用,而短时间又无法改造它,于是我们就想办法适配它。 适配器分类: 类适配器模式 对象的适配器
阅读全文
摘要:UML类图中经常会用到各种箭头和线条来表示不同类或者接口之间的关系,因此非常好的理解各个图标的含义是很有必要的。 在物理设计阶段可以通过EA工具将类图搭建好,然后直接生成物理类,这样也可以减少物理设计的工作量。 下面介绍UML中六种关系: 1. 泛化(Generalization) 概念:泛化是一种
阅读全文
摘要:策略模式基础讲解已经很详尽: https://www.cnblogs.com/lewis0077/p/5133812.html 补充使用实例1:网络请求重试策略 策略接口: 抽象类 默认重试策略的实现: 业务请求实体中会包含一个 RetryPolicy 对象,当需要判断是否需要重试时只需要调用该对象
阅读全文
摘要:1. 概述 外观模式,我们通过外观的包装,使应用程序只能看到外观对象,而不会看到具体的细节对象,这样无疑会降低应用程序的复杂度,并且提高了程序的可维护性。 例子1:一个电源总开关可以控制四盏灯、一个风扇、一台空调和一台电视机的启动和关闭。该电源总开关可以同时控制上述所有电器设备,电源总开关即为该系统
阅读全文
摘要:观察者模式面向的需求是: A对象(观察者)对B对象(被观察者)的某种变化高度敏感,需要在B变化的一瞬间做出反应。 举个例子,新闻里喜闻乐见的警察抓小偷,警察需要在小偷伸手作案的时候实施抓捕。在这个例子里,警察是观察者、小偷是被观察者,警察需要时刻盯着小偷的一举一动,才能保证不会错过任何瞬间。程序里的
阅读全文
摘要:1、想到单例模式,根据经验写的代码如下: public class Siglton{ private static Siglton instance; private Siglton(){} private static Siglton getInstance(){ if(instance == n
阅读全文
摘要:Solid原则 1、单一职责原则(SRP) Single Responsibility principle: 每个类应只有一个引起它变化的原因/每个类应只担任一个职责,以便于日后的程序的维护。 2、开闭原则(OCP) 一个软件实体应当对扩展开放,对修改关闭。 你添加新功能的时候应该只是向代码集中添加
阅读全文

浙公网安备 33010602011771号