设计模式总结
_starking
动机+能力+提示,改变从今天开始
展开
-
策略模式
对象的行为模式!又称之为政策模式! 用意 针对一组算法,将每一个算法封装到共同接口的独立类中,从而使得它们可以相互替换,而不会影响到客户端。(类似 抽象接口——具体实现) 示例 具备的角色 Context(环境) IStrategy(抽象策略) StrategyImpl(具体策略) 策略模式将行为与环境分割开,策略的增减都不会影响到环境和客户端。 环境 ...原创 2019-10-17 22:25:19 · 104 阅读 · 0 评论 -
迭代子模式
对象的行为模式。又称之为游标模式。 什么是迭代子模式? 迭代子模式可以顺序地访问一个集合中的元素而不必暴露集合的内部表象。 即 迭代子模式将迭代逻辑封装到一个独立的迭代子对象中,从而与聚集本身分割开。(更符合开闭原则) 相关角色 抽象迭代子角色 定义遍历元素所需的接口 具体迭代子角色 实现了Iterator接口,记录迭代过程中的游标位置 抽象集合角色...原创 2019-10-15 23:01:35 · 230 阅读 · 0 评论 -
责任链模式
对象的行为模式! 定义 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。 请求在链上传递,直到某一个对象处理请求。客户端不知道谁处理,系统可以动态地重新组织链和分配责任。 责任链可以是一条直线,一个环链,或者一个树状结构的一部分。 纯的与不纯的责任链模式 纯的责任链模式 要求一个具体的处理者对象只能在承担责任和将责任传给下家 两...原创 2019-10-14 22:33:01 · 103 阅读 · 0 评论 -
享元模式
对象的结构模式! 定义 以共享的方式高效地支持大量的细粒度对象。 适用场景 下列条件都满足时,考虑使用享元模式 一个系统中有大量对象 这些对象耗费大量的内存 对象的属性可以分为有状态和无状态的两类 把这些对象所有的有状态属性去除后,为同一个无状态对象 实现方式 将可以共享的状态和不可共享的状态区分开,并将不可共享的状态从类里去除 为这个类的创建提供一个工厂,进行创建控制 状态外...原创 2019-10-02 18:13:35 · 91 阅读 · 0 评论 -
门面模式
对象的结构模式! 定义 外部与一个子系统的通信必须通过一个统一的门面对象进行。 门面模式要求一个子系统的外部与其内部的通信必须通过一个统一的门面对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。 一般一个子系统只需要有一个门面类,提供该子系统所有的行为。 使用目的 为了用户使用方便,将过度拆分的分散功能组合成一个整体,对外提供一个统一的接口。 适用场景 为一个复杂子系统...原创 2019-10-04 12:10:51 · 109 阅读 · 0 评论 -
桥梁模式
对象的结构模式!又称之为柄体模式、接口模式。 用意 将抽象化与实现化脱耦,使得二者可以独立地变化。 即 在系统中将抽象化和实现化之间使用组合/聚合关系而不是使用继承关系,从而使得两者可以相对独立的变化! 即 聚合优先,继承次之! 概念解释 抽象化 存在于多个实体中的共同的概念性联系,就是抽象化。 实现化 抽象化给出的具体实现,就是...原创 2019-10-04 12:18:59 · 87 阅读 · 0 评论 -
不变模式
定义 一个对象的状态在对象被创建之后就不再变化,这就是不变模式 何为不再变化? 一个类的对象内部状态创建后,在对象整个生命周期都不会发生变化。 不变模式缺少改变自身状态的行为,因此它是关于行为的,属于行为模式。 两种形式 弱不变模式 一个类的实例状态是不可变化的,但是 这个类的子类实例具有变化的状态 2.强不变模式 一个类的实例状态是不可变化的,同时它的子类也具有不...原创 2019-10-06 11:03:03 · 120 阅读 · 0 评论 -
模板方法模式
属于类的行为模式! 模板方法模式中的方法分为两类 模板方法 指定义在抽象类中,把基本方法组合在一起,形成一个总算法或一个总行为的方法。一般子类直接继承,无需修改。 2.基本方法 a)抽象方法 需要子类去实现 b)具体方法 无需子类实现,类似一个工厂方法(公用方法) c)钩子方法...原创 2019-10-06 11:21:45 · 146 阅读 · 0 评论 -
代理模式
对象的结构模式! 前言 对象间的间接通信同样是面向对象的设计中一条重要的“审美观”。 定义 给某一个对象提供一个代理对象,由代理对象控制对原对象的引用。 作用 低耦合!易复用! 代理模式的时序图 代理的种类 远程代理 将网络细节隐藏,代理对象承担网络通信工作。(Dubbo调用) 2.虚拟代理 代理对象可以在必要的时候才将被代理的对象加载;可以对加载的过程进行优化...原创 2019-10-02 18:01:00 · 97 阅读 · 0 评论 -
装饰模式
又称为包装模式! 对象结构型模式。 定义 装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 (简言之就是 将被装饰角色作为装饰角色的内部属性,在保持被装饰角色接口不变的情况下,扩展原被装饰角色的性能) 适用场景 需要扩展一个类的功能,或者给一个类增加附加责任 需要动态的给一个对象增加功能,这些功能可以再动态地撤销 需要增加由一些基本功能的排列组合而产生的非常...原创 2019-10-02 17:30:57 · 93 阅读 · 0 评论 -
工厂模式之工厂方法模式
什么是工厂方法模式? 将简单工厂模式中的工厂角色进行抽象,成为抽象工厂角色,具体创建工作由其子类去做。(可以在不修改工厂角色的情况下增加新的产品!解决了简单工厂模式的痛点!) 工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。 工厂方法与简单工厂模式的区别 工厂方法模式的核心是一个抽象工厂类; 简单工厂模式的核心放在一个具体的工厂类中。 工厂方...原创 2019-01-15 23:33:22 · 145 阅读 · 0 评论 -
工厂模式之抽象工厂模式
前言 产品族:指位于不同产品等级结构中,功能相关联的产品组成的家族 例如:电脑配件有 鼠标、键盘、显示器(三种抽象产品角色) 微软可以生产鼠标、键盘、显示器 因此微软可以抽象为一种产品族; IBM也可以生产鼠标、键盘、显示器 所以IBM是另一种产品族; Lenovo也生产鼠标、键盘、显示器 Lenovo也是一个产品族。 什么是...原创 2019-01-27 21:00:23 · 248 阅读 · 0 评论 -
建造者模式
模式定义 将一个复杂对象的构建与其表示分离,使得同样的构建过程可以创建不同的表示。 使用场景 当一个类的构造函数参数个数超过4个,而且这些参数有些是可选的参数,考虑使用构造者模式。 解决的问题 有一个Computer类,类中cpu与ram是必填参数,其余为可选参数 public class Computer { private String cpu;//必须 private St...原创 2019-08-11 14:42:38 · 105 阅读 · 0 评论 -
原型模式
对象的创建模式! 定义 使用原型实例指定将要创建的对象类型,通过复制这个实例创建新的对象 适用场景 有的对象创建过程比较复杂; 有的对象需要频繁创建; 通过复制已知对象的方式可以快速创建出相同类型的对象。 使用 复制对象必须实现了cloneable接口 优点 对象创建比较复杂时,可以简化对象的创建流程,提高创建效率; 缺点 需要为每一个类配备一个clo...原创 2019-09-14 10:36:01 · 75 阅读 · 0 评论 -
单例模式
对象的创建模式! 什么叫单例模式? 单例模式确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 单例模式满足三个特点: 1、单例类只能有一个实例 2、单例类必须自己创建自己的唯一实例(构造器私有,避免外部实例化) 3、单例类必须给其它对象提供这唯一的实例。 饿汉式与懒汉式 1、饿汉式单例类中提供一个私有的静态类变量,构造器私有,加载类时完成实例化;并提供...原创 2019-09-14 10:29:39 · 162 阅读 · 0 评论 -
缺省适配模式
定义 为一个接口提供缺省实现,然后可以从缺省实现进行扩展,而不必从原有接口进行扩展。 适用场景 很多情况下,必须让一个具体类实现某一个接口,但是这个类又用不到接口所规定的所有方法,只能实现所有的方法,然后部分用不到的接口空实现。 空的方法是一种浪费,有时候也是一种混乱。(平庸) 在任何时候,如果不准备实现一个接口的所有方法,可以先制造一个抽象类,给出接口所有方法的平庸...原创 2019-09-18 23:13:11 · 135 阅读 · 1 评论 -
适配器模式
属于类的结构模式! 类似变压器,也称之为变压器模式。(中国220V电压 美国110V电压) 类似转换器,也称之为转换器模式。(中国插座与美国插座) 类似货物的包装过程,也称之为包装模式。(同常写一些包装类,以满足需要) 定义 把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法在一起工作的两个类能一起工作。 适用场景 系统需要使用现有的类,而此类的接...原创 2019-09-18 23:02:05 · 83 阅读 · 0 评论 -
组合模式/合成模式
对象的结构模式! 也称为部分-整体模式。 定义 将对象组合成树形结构以表示“部分整体”的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。 生活案例 医院-科室-医生的关系 学校-学院-学生的关系 公司-部门-人员的关系 树结构 1、一个基于继承的类型的等级结构便是一个树结构 2、一个基于合成的对象结构也是一个树结构 有向树结构种类 1...原创 2019-10-02 17:07:09 · 152 阅读 · 0 评论 -
工厂模式之简单工厂模式
前言 工厂模式分为三种 1、简单工厂模式(静态工厂方法模式) 2、工厂方法模式(多态性工厂模式) 3、抽象工厂模式(工具箱模式) 什么是简单工厂模式? 由一个工厂类的静态方法根据传入的参数变量决定创建出哪一种产品类的实例。 简单工厂模式具备三种角色:工厂角色、抽象产品角色、具体产品角色,三种角色可以合并,省略。 好处: 1)客户端完全不必操心工厂方法返回的对象的...原创 2019-01-12 16:11:45 · 251 阅读 · 0 评论