设计模式--Java实现篇
最近有在看刘伟老师的<<设计模式的艺术软件开发人员的内功修炼之道>>,边看的过程中做了一些笔记,同时也加入的自己的一些思考,写成了博客,希望这些博客能帮到想进一步了解设计模式的人;共同学习,共同进步
Zach_ZSZ
IT攻城狮,喜爱研究技术,希望通过不断的学习,将来能更多的分享技术,更好的使用技术。
展开
-
结构型模式----适配器模式
1. 适配器模式定义 将一个接口转换成客户希望的另一个接口,使接口不兼容的那些类可以一起工作.(注:该处的接口是指广义的接口,可以表示一个方法或者方法的集合) 2. 结构图 3. 角色分析 Target(目标抽象类):定义客户所需接口,可以是一个抽象类,接口或具体类 Adapter(适配器类):可调用另一个接口,作为一个转换器,对Adaptee和Target进行...原创 2018-06-18 17:51:43 · 193 阅读 · 0 评论 -
结构型模式----桥接模式
1. 定义 将抽象部分与其实现部分分离,使得它们可以独立地变化,它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式 2. 桥接模式结构图: 结构图中角色分析 Abstraction(抽象类):一般是抽象类而不是接口,其中定义了一个Implementor(实现类接口)类型的对象并可以维护该对象,包含抽象业务方法,...原创 2018-06-19 21:12:51 · 154 阅读 · 0 评论 -
创建型模式
创建型模式中各个模式的基本定义与使用频率原创 2018-06-20 23:36:07 · 269 阅读 · 0 评论 -
创建型模式----单例模式
1. 单例模式的概述 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例2. 单例模式结构图3. 饿汉式单例模式代码实现package com.zach.pattern.singleton;/** * @Author:Zach * @Description: 饿汉式单例模式 * @Date:Created in 10:57 2018/8/...原创 2018-06-20 23:45:48 · 166 阅读 · 0 评论 -
创建型模式----简单工厂模式
1. 定义 定义一个工厂类,和一个静态的工厂方法,可以根据参数的不同返回不同类的实例,在客户端将类的使用与创建分离,这就是简单工厂模式(Simple Factory Pattern) 2. 简单工厂模式的结构图 角色介绍; 1. Factory(工厂角色):负责实现创建所有产品实例的内部逻辑;工厂类可以被外界调用,创建所需的产品对象;在工厂类中提供了静态工厂方法...原创 2018-06-21 07:04:26 · 250 阅读 · 0 评论 -
创建型模式----工厂方法模式
1. 定义 定义一个用于创建对象的接口,让子类决定哪一个类实例化,工厂方法模式让一个类的实例化延迟到其子类;工厂方法模式简称为工厂模式,又可称为虚拟构造器模式或多态工厂模式 2. 工厂方法模式结构图 3. 工厂方法模式角色分析Product(抽象产品):它是定义产品的接口,是工厂方法模式所创建对象的超类型,也就是产品对象的公共父类 ConcreteProduct(具...原创 2018-06-21 07:07:19 · 229 阅读 · 0 评论 -
创建型模式----抽象工厂模式
1. 前言 工厂方法模式引入了工厂的等级结构,解决了简单工厂模式中工厂职责太重的问题,但由于工厂package com.zach.abstractFactory;//按钮接口 :抽象产品public interface Button { public void display();}方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,此...原创 2018-06-21 07:09:36 · 164 阅读 · 0 评论 -
创建型模式----原型模式
1. 定义 使用原型实例指定创建对象的种类,并且通过克隆这些原型创建新的对象;原理是将一个原型对象传给要发动创建的对象,该对象通过请求原型对象克隆自己来创建过程 2. 结构图 3. 角色分析 Prototype(抽象原型类): 它是声明克隆方法的接口,是所有具体原型类的公共父类,可以是抽象类也可以是接口; ConcretePrototype(具体原型类):...原创 2018-06-21 07:11:18 · 199 阅读 · 0 评论 -
创建型模式----建造者模式
1. 定义 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示,建造者模式是一种对象创建型模式 2. 建造者模式结构图: 3. 结构图中的角色分析 Builder(抽象建造者):创建各个部件的抽象接口,可以是抽象类或接口 ConcreteBuilder(具体建造者):实现Builder接口,实现各个部件的具体构造和装配方法 Produc...原创 2018-06-21 07:12:33 · 248 阅读 · 0 评论 -
结构型模式--组合模式
1. 定义:组合多个对象形成树形结构以表示具有”整体一部分”关系的层次结构,是一种对象结构型模式2. 结构图 3. 组合模式中包含的角色 a) Component(抽象构件):它可以是接口或抽象类,为叶子构件和容器构件对象声明接口,包含了所有子类共有行为的声明和实现定义了访问及管理它的子构件的方法 b) Leaf(叶子构件):它在组合模式结构中表示叶子节点对象,叶子节点没有子节点,实现了在抽象...原创 2018-06-23 23:28:50 · 317 阅读 · 0 评论 -
结构型模式--装饰模式
1. 装饰模式概述 装饰模式可在不改变对象本身功能的基础上给对象增加额外的新行为,现实生活中如墙壁贴壁画,增加美观;装饰模式是一种替代继承的技术,通过无须定义子类的方式给对象动态增加职责;在装饰模式中引入装饰类,在装饰类中既可以调用待装饰的原有类的方法,还可以增加新的方法,扩充原有类的功能; 1) 定义:动态地给一个对象增加一些额外的职责,在增加对象功能方面比生成子类的实现方式更灵活....原创 2018-06-28 22:53:33 · 250 阅读 · 0 评论 -
结构型模式--外观模式
1. 概述 在软件中将一个系统划分为若干个子系统有利于降低整个系统的复杂性,使客户类与子系统之间通信和相互依赖关系达到最小,实现的方式之一就是引入一个外观角色,它Wie子系统的访问提供了一个简单而单一的入口.若没有外观模式,每个客户端可能需要和多个子系统进行复杂的交互,如图(a)所示,而增加一个外观角色后,客户端只需要直接与外观角色交互,降低系统的耦合度,如图(b)所示 注: 在外观模...原创 2018-07-03 21:59:42 · 430 阅读 · 0 评论 -
结构型模式--享元模式
1. 享元模式的概述 享元模式以共享的方式高效地支持大量细粒度对象的重用;享元对象能做到共享的关键是区分内部状态(Intrinsic State)和外部状态(Extrinsic State) 1) 内部状态是存储在享元对象内部并且不会随环境改变而改变的状态,内部状态可以共享,例如:字符的内容,不会随外部环境的变化而变化,无论在任何环境下,字符"a"始终是"a",不会变; 2) 外...原创 2018-07-12 11:10:03 · 525 阅读 · 0 评论 -
结构型模式--代理模式
1. 代理模式的概述 1) 定义: 给某一个对象提供一个代理,并由代理对象控制对原对象的引用2) 结构图: 3) 图中包含的角色: 1. Subject(抽象主题角色): 声明了真实主题和代理主题的共同接口,使得在任何使用真实主题的地方都可以使用代理主题,客户端针对抽象主题编程 2. Proxy...原创 2018-07-13 21:34:57 · 553 阅读 · 0 评论 -
行为型模式---命令模式
命令模式:1. 定义: 将一个请求封装成一个对象,从而可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销操作2. 结构:1) Command(抽象命令类):一般是一个抽象类或接口,声明了用于执行请求的execute()等方法,通过这些方法可以调用请求接收者的相关操作2) ConcreteCommand(具体命令类): 具体命令类是抽象命令类的子类,对应具体的接...原创 2018-07-22 16:30:01 · 172 阅读 · 0 评论 -
行为型模式---状态模式
1. 状态模式的概述 状态模式用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题,当系统中某个对象存在多个状态,这些状态之间可进行转换,而且对象在不同状态下的行为不相同时可以使用状态模式;状态模式将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象的状态可以灵活变化,客户端无须关心对象状态的转换以及对象所处的当前状态;2. 状态模式中的角色: 1) Co...原创 2018-08-06 20:21:54 · 660 阅读 · 0 评论 -
行为型模式---迭代器模式
迭代器模式(Iterator Pattern) 在软件开发时,经常需要使用聚合对象来存储一系列数据,聚合对象拥有两个职责: 一是存储数据;二是遍历数据,前者是聚合对象的基本职责,而后者既是可变化的又是可分离的,因此可将遍历数据的行为从聚合对象中分离出来,封装在一个迭代器对象中;这可简化聚合对象的设计,符合单一职责的原则.1. 定义: 提供一种方法来访问聚合对象,而不用暴露这个对象...原创 2018-08-06 21:09:58 · 202 阅读 · 0 评论 -
对象间的联动----观察者模式
1. 观察者模式概述 在软件系统中,有些对象之间存在类似交通信号灯和汽车之间的关系,一个对象的状态或行为的变化将导致其他对象的状态或行为也发生改变,它们之间将产生联动,为了更好的描述对象之间存在的这种一对多或一对一的联动,就产生了观察者模式观察者模式,用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将会自动通知其他对象,其他对象作出相应的反应,在观察者模式中,发生改变的对象称为...原创 2018-08-06 22:54:32 · 305 阅读 · 0 评论