java设计模式之我见
学习设计模式时自己的一些感悟
1-木2-林3-森
乘年轻,不留遗憾
展开
-
设计模式-装饰器模式(Decorator Pattern)
装饰器模式是什么? 动态的给一个对象添加一些额外的功能,同事又不改变对象的结构。 装饰器模式的要素 被装饰对象(Bread) 装饰对象 装饰器(Decorator) 公共接口或者抽象类 装饰器模式示意图简单例子 package myDesignPatternsTest.decoratorPattern; /** * 这是一个他们的公共父类(一般为抽象类或者接口) */ pub...原创 2018-09-21 10:15:15 · 249 阅读 · 0 评论 -
设计模式-解释器模式(Interpreter Pattern)
解释器模式是什么? 定义语言的语法,并且建立一个解释器来解释该语言中的句子。 解释器模式的元素 抽象表达式角色:声明一个抽象的解释操作 抽象语法树:抽象语法树的每一节点都代表一句话,而在每一个节点上都可以执行解释方法。 具体表达式:去解释每一个句子 解释器模式示意图简单例子 package myDesignPatternsTest.interpreterPattern; //抽象解释...原创 2018-09-19 14:34:39 · 172 阅读 · 0 评论 -
设计模式-命令模式(Command Pattern)
命令模式是什么? 就是将一个请求封装成一个对象,从而使你可以用不同的请求对客户进行参数化,请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。 命令模式的要素 命令角色(Command):声明执行操作的接口,抽象类或者接口 具体命令角色(ConcreteCommand):将接收者对象绑定于一个动作,调用接收者相应的...原创 2018-09-18 10:50:18 · 436 阅读 · 0 评论 -
设计模式-策略模式(Strategy Pattern)
策略模式是什么? 就是定义一系列的算法,把它们一一封装起来,并使他们可以相互替换。策略模式使算法可独立于使用它的客户而变化. 策略模式的要素 抽象策略角色:通常用一个抽象类或者接口来实现,主要定义这个算法所完成的功能。 具体策略角色:包装了相关算法和行为。 环境角色:持有策略类的引用。 策略模式示意图简单例子 package myDesignPatternsTest.strategy...原创 2018-09-17 11:07:05 · 207 阅读 · 0 评论 -
设计模式-备忘录模式(Memento Pattern)
备忘录模式是什么? 备忘录模式又称标记模式。在不破坏封装性的前提下,捕获一个对象的内部状态,并在改对象之外保存这个状态。这样以后就可以将改对象恢复到原先保存的状态,简而言之就是保存一个对象的某个状态,以便在适当的时候恢复对象。 备忘录模式的要素 备忘录角色(Memento):存储备忘发起者的内部状态。 备忘发起角色(Originator):创建一个备忘录角色,用以保存当前时刻自己内部的状态...原创 2018-09-14 17:12:52 · 557 阅读 · 0 评论 -
设计模式-原型模式(Prototype Pattern)
原型模式是什么? 原型模式的对象不是通过new()方法直接创建的,而是通过已经存在的对象实例克隆出一个对象,这个克隆对象和他的源对象具有相同的属性和状态。 原型模式的要素 原型接口 克隆操作:浅拷贝实现 Cloneable,重写,深拷贝是通过实现 Serializable 读取二进制流。 原型模式示意图简单例子 package myDesignPatternsTest.prototyp...原创 2018-09-13 13:07:05 · 184 阅读 · 0 评论 -
设计模式-抽象工厂模式(Abstract Factory Pattern)
抽象工厂模式和工厂模式的要素是一样的。但是抽象工厂模式是提供一系列相关或者相互依赖对象的接口,而无需指定他们具体的类。 比如我们上一篇模块中举的例子。 我们有运动员接口,有体育总局这个工厂接口,可以生产出不同的运动员协会,不同的远动员协会生产不同的运动员,那么我们可以让体育总局生产出不同的运动器材给不同的体育协会。让 抽象工厂示意图他们自己的运动员使用。这就抽象工厂模式。 简单例子 p...原创 2018-09-12 17:54:07 · 235 阅读 · 0 评论 -
设计模式-工厂模式(Factory Pattern)
工厂模式是什么? 定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类之中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 工厂模式的元素 抽象工厂角色:是工厂方法的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。 具体工厂角色:是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且收到应用程序调用而创建产品...原创 2018-09-11 13:28:29 · 315 阅读 · 0 评论 -
设计模式-享元模式(Flyweight Pattern)
享元模式是什么? 一个系统中有多个相同的对象,我们只需要共享一份就可以了,如果没有新的对象则去创建新的对象,重要是用于减少创建对象的数量,以减少内存占用和提高性能。 享元模式的要素 享元模式示意图有工厂对象:通过一个工厂类对对象加以控制,减少重复的创建。 内蕴状态的对象:不会随这系统的变化而变化,所以是可以共享的对象。 外现状态的对象:随着状态的改变而改变。 简单例子 package...原创 2018-09-10 11:52:55 · 221 阅读 · 0 评论 -
设计模式-代理模式(PROXY PATTERN)
代理模式是什么? 为其他对象提供一种代理用来控制这个对象的访问。 换句话说:我们创建具有现有对象的对象,以便向外界提供功能接口。用一个类代表另一个类的功能。 代理模式的要素 抽象角色: 声明真实角色和代理角色的共同接口。 代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻替代真是对象,同时,代理对象可以在执行真实对象操...原创 2018-09-07 13:46:42 · 189 阅读 · 0 评论 -
设计模式-中介模式
中介模式是什么? 用一个中介对象来封装一系列的对象交互。中介者使各对象之间不需要显示的相互作用,从而使其耦合松散,而且可以独立地改变他们之间的交互。简而言之就是,将原来两个直接引用或者依赖的对象拆开,在他们中间加一个‘中介’对象,使得两头分别和‘中介’对象引用和依赖。 中介模式的要素 抽象中介者角色:抽象中介者角色定义统一的接口用于各同事之间的通讯。 具体中介角色:具体中介者角色通过协调各...原创 2018-09-06 13:42:28 · 122 阅读 · 0 评论 -
设计模式-状态模式(State Pattern)
状态模式是什么? 允许一个对象再其类别状态发生改变时改变它的行为,也就是说类的行为是基于它的状态改变的。 状态模式的要素 使用环境(context)角色:客户程序是通过它来满足自己的需求,它定义了客户程序需要的接口,并且维护一个具体状态角色实例。通过这个实例来决定当前的状态。 状态(state)角色:定义一个接口以封装与使用环境角色的一个特定状态相关的行为。 具体状态角色(Concrete...原创 2018-09-05 11:03:37 · 254 阅读 · 0 评论 -
设计模式-观察者模式(Observer Pattern)
什么是观察者模式? 观察者模式也叫发布订阅模式,顾名思义就是定义对象间一对多的关系,当一个对象的状态发生改变的时候,所以依赖于他的对象都能得到通知并被自动更新。 观察者模式的要素 观察者模式示意图 抽象目标角色(被观察者) 目标角色知道它的观察者,可以有任意多个观察者同时来观察一个目标,并且提供注册和删除观察者对象的接口。目标角色往往由抽象类或者接口实现 抽象观察者角色 为那些...原创 2018-09-04 09:26:56 · 270 阅读 · 0 评论 -
设计模式-玩转单例模式(Singleton Pattern)
单例模式是什么? 对象只要利用自己的属性完成自己的任务,那该对象就是承担了责任。除了维持了自身的一致性,该对象无需承担其他任何责任。如果该对象还承担了其他责任,而其他对象又依赖于该特定对象所承担的责任,我们就需要得到该特定的对象。 单例模式的目的是什么? 将类的责任集中到唯一的单体对象中,确保该类只有一个实例,并且为该类提供一个全局访问点。 单例模式的难点:如何在系统中识别单例和保证单例的...原创 2018-09-03 09:59:34 · 202 阅读 · 0 评论 -
设计模式之接口型模式-配适器模式(Adapter 模式)
说到配适器模式。我们不禁要问什么是配适器模式???? 通俗的来说配适器模式就是把一个类的接口转换成客户端所期待的另一种接口,从而使原接口不匹配而无法在一起工作的两个类能在一起工作。 假设有两个类A,B. A类有某些功能,但是需要B类中的某一个模块才能工作,这个时候我们就能使用配适器模式。代码如下: package myDesignPatternsTest.InferMode.Adapter...原创 2018-08-27 10:22:08 · 257 阅读 · 0 评论 -
设计模式之接口型模式-外观模式(Facade Pattern 模式)
外观模式是什么? 简而言之外观模式就是定义了一个将子系统的一组接口集成在一起的高层接口,一提供一个一致的界面,通过这个界面,其他的系统可以方便的调用子系统的功能。而忽略子系统内部发生的变化。 外观模式示例图使用外观模式需要注意的几点: 一个系统有多个外观类 在外观模式中,通常只需要一个外观类,并且此外观类只有一个实例,换言之它是一个单例类。在很多情况下为了节约系统资源,一般将外观类设计为单...原创 2018-08-27 11:54:26 · 486 阅读 · 0 评论 -
设计模式之接口型模式-组合模式(合成模式)
组合模式是什么? 组合模式(又为‘部分-整体’模式)屏蔽了容器对象与单个对象在使用时的差异,为客户端提供统一的接口操作,从而降低客户端代码与被调用对象之间的耦合关系,方便系统的维护和扩展。 组合模式的要素 1.抽象构件角色(Component):定义参加组合的对象的共有方法和属性,可以定义一些默认的行为或属性。 2.叶子构件(Leaf):叶子对象,其下再也没有其他的分支。 3.树枝构件(...原创 2018-08-28 09:26:46 · 764 阅读 · 0 评论 -
设计模式之接口型模式-桥接模式(桥梁模式)
桥接模式是什么? 桥接模式又称桥梁模式(BridgePattern),主要是为了实现抽象部分和现实部分脱耦,使他们各自可以独立的变化。 桥接模式的组成要素 抽象化角色(Abstraction):抽象化给出的定义,并保存一个对实现化对象的引用,就是图像类中的形状父类。 修正抽象化角色(RefinedAbstraction):扩展抽象化角色,改变和修正父类对抽象化的定义,比如形状下有正方形,圆...原创 2018-08-29 10:50:46 · 379 阅读 · 0 评论 -
设计模式-责任型模式(责任链模式)
责任型模式是什么? 在责任链模式中很多对象都是由每一个对象对其下家的引用而联接起来形成一条责任链。请求在链上传递,直到链上的某一个对象决定处理次请求。发出这个请求的客户并不知道链上的哪一个对象最终处理这请求,这使得系统可以在不影响客户端的情况下动态地重新组织链和分配任务。 责任链模式示意图责任链模式的要素 请求发起者 抽象请求发起者 抽象请求处理者 具体的请求处理者 实际例子(...原创 2018-08-30 11:04:54 · 888 阅读 · 1 评论