
设计模式
文章平均质量分 87
小潭渔
这个作者很懒,什么都没留下…
展开
-
java设计模式---原型模式(prototype pattern)
java设计模式—原型模式(prototype pattern)我们在程序开发过程中,都会遇到为一个类创建多个实例的情况,实例的创建开销很大,而且这些实例内部成员往往完全相同或仅有细微的差异,这种情况下如果能通过复制一个已创建的对象实例来重复创建多个相同的对象,这就可以大大减少创建对象的开销,此时就需要使用到原型模式。 1. 定义 原型模式是可以通过一个对象实例确定创建对象的种类,并且通...原创 2018-03-09 11:13:58 · 272 阅读 · 0 评论 -
java设计模式---责任链模式(Chain of responsibility pattern)
java设计模式—责任链模式(Chain of responsibility pattern)1. 概述 之前我们已经结束了创建型和结构型设计模式,接下来我们介绍行为型设计模式,行为型设计模式包含了11中,首先介绍的是责任链模式。该模式中包含了一些命令对象和一系列的处理对象,每一个对象都都保有对其下家的引用。如果我们将链中的每个节点看做是一个对象,每一个对象拥有不同的处理逻辑,将一个请求从...原创 2018-03-19 19:53:31 · 822 阅读 · 0 评论 -
java设计模式---命令模式(Command pattern)
java设计模式—命令模式(Command pattern)1. 概述 在软件开发中,我们经常需要向某些对象发送请求(调用其中的某个或某些方法),但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,此时,我们特别希望能够以一种松耦合的方式来设计软件,使得请求发送者与请求接收者能够消除彼此之间的耦合,让对象之间的调用关系更加灵活,可以灵活地指定请求接收者以及被请求的操作。命令模式为此类问...原创 2018-03-20 10:14:50 · 416 阅读 · 0 评论 -
java设计模式---解释器模式(Interpreter pattern)
java设计模式—解释器模式(Interpreter pattern)1. 概述 解释器模式是一种使用频率相对较低但学习难度较大的设计模式,它用于描述如何使用面向对象语言构成一个简单的语言解释器。在某些情况下,为了更好地描述某一些特定类型的问题,我们可以创建一种新的语言,这种语言拥有自己的表达式和结构,即文法规则,这些问题的实例将对应为该语言中的句子。此时,可以使用解释器模式来设计这种新的语...原创 2018-03-20 11:21:13 · 280 阅读 · 0 评论 -
java设计模式---装饰者模式(decorator pattern)
java设计模式—装饰者模式(decorator pattern)1. 定义 在不必改变原类文件和原类使用的继承的情况下,动态地扩展一个对象的功能。 它是通过创建一个包装对象,也就是用装饰来包裹真实的对象来实现。 装饰模式是一种用于替代继承的技术,它通过一种无须定义子类的方式来给对象动态增加职责,使用对象之间的关联关系取代类之间的继承关系。在装饰模式中引入了装饰类,在装饰类中既可以调用待...原创 2018-03-14 11:21:44 · 280 阅读 · 0 评论 -
java设计模式---迭代器模式(iterator pattern)
java设计模式—迭代器模式(iterator pattern)1. 概述 可以存储多个成员对象(元素),这些类通常称为聚合类(Aggregate Classes),对应的对象称为聚合对象。为了更加方便地操作这些聚合对象,同时可以很灵活地为聚合对象增加不同的遍历方法,可以访问一个聚合对象中的元素但又不需要暴露它的内部结构。这就是接下来我们将要学习的迭代器模式,通过引入迭代器,客户端无须了解聚...原创 2018-03-20 14:45:58 · 3039 阅读 · 0 评论 -
java设计模式---中介者模式(Mediator pattern)
java设计模式—中介者模式(Mediator pattern)1. 概述 如果在一个系统中对象之间存在多对多的相互关系,我们可以将对象之间的一些交互行为从各个对象中分离出来,并集中封装在一个中介者对象中,并由该中介者进行统一协调,这样对象之间多对多的复杂关系就转化为相对简单的一对多关系。通过引入中介者来简化对象之间的复杂交互,中介者模式是“迪米特法则”的一个典型应用. 2. 定义 中...原创 2018-03-20 15:18:48 · 699 阅读 · 0 评论 -
java设计模式---备忘录模式(Memento pattern)
java设计模式—备忘录模式(Memento pattern)1. 概述 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无效或者存在问题时,可以使用暂时存储起来的备忘录将状态复原,当前很多软件都提供了撤销(Undo)操作,其中就使用了备忘录模式。 2. 定义 备忘录模式(Memento Pattern):在不破坏封装的前提下,捕获一个对象的...原创 2018-03-26 09:36:24 · 368 阅读 · 0 评论 -
java设计模式---观察者模式(observer pattern)
java设计模式—观察者模式(observer pattern)1. 概述 观察者模式(observer pattern):观察者模式是使用频率最高的设计模式之一,它用于建立一种对象与对象之间的依赖关系,一个对象发生改变时将自动通知其他对象,其他对象将相应作出反应。在观察者模式中,发生改变的对象称为观察目标,而被通知的对象称为观察者,一个观察目标可以对应多个观察者,而且这些观察者之间可以没有...原创 2018-03-26 14:33:08 · 208 阅读 · 0 评论 -
java设计模式---状态模式(State pattern)
java设计模式—状态模式(State pattern)1. 概述 状态模式用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。当系统中某个对象存在多个状态,这些状态之间可以进行转换,而且对象在不同状态下行为不相同时可以使用状态模式。状态模式将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象状态可以灵活变化,对于客户端而言,无须关心对象状态的转换以及对象所处的当前状...原创 2018-03-26 16:08:09 · 369 阅读 · 1 评论 -
java设计模式---策略模式(strategy pattern)
java设计模式—策略模式(strategy pattern)1. 概述 在策略模式中,我们可以定义一些独立的类来封装不同的算法,每一个类封装一种具体的算法,在这里,每一个封装算法的类我们都可以称之为一种策略(Strategy),为了保证这些策略在使用时具有一致性,一般会提供一个抽象的策略类来做规则的定义,而每种算法则对应于一个具体策略类。 策略模式的主要目的是将算法的定义与使用分开,也就...原创 2018-03-26 19:41:02 · 256 阅读 · 0 评论 -
java设计模式---模板方法模式(Template pattern)
java设计模式—模板方法模式(Template pattern)1. 概述 模板方法模式是结构最简单的行为型设计模式,在其结构中只存在父类与子类之间的继承关系。通过使用模板方法模式,可以将一些复杂流程的实现步骤封装在一系列基本方法中,在抽象父类中提供一个称之为模板方法的方法来定义这些基本方法的执行次序,而通过其子类来覆盖某些步骤,从而使得相同的算法框架可以有不同的执行结果。模板方法模式提供...原创 2018-03-27 09:32:04 · 261 阅读 · 0 评论 -
java设计模式---代理模式(proxy pattern)
java设计模式—代理模式(proxy pattern)1. 概述 代理模式是一种对象结构型模式。在代理模式中引入了一个新的代理对象,代理对象在客户端对象和目标对象之间起到中介的作用,它去掉客户不能看到的内容和服务或者增添客户需要的额外的新服务。 2. 定义 代理模式:给某一个对象提供一个代理或占位符,并由代理对象来控制对原对象的访问。 3. UML图 由图可知,代理模...原创 2018-03-19 11:18:53 · 275 阅读 · 0 评论 -
java设计模式---亨元模式(Flyweight Pattern)
java设计模式—亨元模式(Flyweight Pattern)1. 概述 当一个软件系统在运行时产生的对象数量太多,将导致运行代价过高,带来系统性能下降等问题。例如在一个文本字符串中存在很多重复的字符,如果每一个字符都用一个单独的对象来表示,将会占用较多的内存空间,那么我们如何去避免系统中出现大量相同或相似的对象,同时又不影响客户端程序通过面向对象的方式对这些对象进行操作?享元模式正为解决...原创 2018-03-19 10:46:17 · 404 阅读 · 0 评论 -
java设计模式---外观模式(facade pattern)
java设计模式—外观模式(facade pattern)1. 定义 外观模式提供了一个统一的接口,用来访问子系统中的一群接口。外观模式定义一个高层接口,让子系统更容易使用。 2. UML图 外观模式又称为门面模式,它是一种对象结构型模式。外观模式是迪米特法则的一种具体实现,通过引入一个新的外观角色可以降低原有系统的复杂度,同时降低客户类与子系统的耦合度。 从上图可以看到外观模...原创 2018-03-19 09:30:45 · 264 阅读 · 0 评论 -
java设计模式---适配器模式(Adapter pattern)
java设计模式—适配器模式(Adapter pattern)前面已经详细的讲解了java23种设计模式中的创建型模式,接下来就讲解下结构型设计模式—适配器模式(Adapter pattern) 1. 定义 适配器模式把一个类的接口变换成客户端所期待的另一个接口,从而使原本因接口不兼容而无法一起工作的两个类能一起工作。适配器模式是结构型设计模式之一,其在不修改原来两个模块代码的情况下,将...原创 2018-03-09 11:36:26 · 453 阅读 · 0 评论 -
java设计模式系列---设计原则
java设计模式系列—设计原则本文作为java设计模式系列开篇,首先介绍下设计模式的七大设计原则。 1. 开闭原则 1.1 定义 一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。 1.2 核心 (1)对原有代码修改关闭 (2)对新代码的扩展开放 (3)其他原则都是为开闭原则服务的 1.3 开闭原则的重要性 为什么使用开闭原则? 对测试的影响 可提高...原创 2018-03-02 10:25:53 · 237 阅读 · 1 评论 -
java设计模式系列---23种设计模式概述
java设计模式系列—23种设计模式概述一、创建型模式 有五种单例了模式(Singleton pattern):单例类只能有一个实例,单例类必须自己创建自己的唯一实例,单例类必须给所有其他对象提供这一实例。工厂模式(factory method pattern):定义了一个创建对象的接口, 但由子类决定要实例化的类是哪一个,工厂方法让类把实例化推迟到子类。抽象工厂模式(Abstract...原创 2018-03-02 11:06:31 · 308 阅读 · 0 评论 -
java设计模式---高内聚、低耦合
java设计模式—高内聚、低耦合前面两篇关于设计模式的文章简单介绍在系统架构中的设计模式及相应规范准则。本篇我们将简单的介绍下结构化设计的两个基本原则:高内聚、低耦合 1. 定义 内聚关注模块内部的元素结合程度,耦合关注模块之间的依赖程度。 (1)内聚性: 又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段...原创 2018-03-02 14:56:40 · 4993 阅读 · 1 评论 -
java设计模式---单例模式(singleton)
java设计模式—单例模式(singleton)1. 定义 单例模式(singleton)又叫单件模式,Java中单例(Singleton)模式是一种广泛使用的设计模式。单例模式的主要作用是保证在Java程序中,某个类只有一个实例存在。一些管理器和控制器常被设计成单例模式。 (1)单例类只能有一个实例。 (2)单例类必须自己创建自己的唯一实例。 (3)单例类必须给所有其他对象提供这一...原创 2018-03-02 15:17:21 · 380 阅读 · 0 评论 -
java设计模式---桥接模式(Bridge pattern)
java设计模式—桥接模式(Bridge pattern)桥接模式是结构型设计模式之一,也称为桥梁模式。桥接模式(Bridge)是为了解决将抽象部分与实现部分分离,好让他们都在自己的维度上有多维度地变化。 1. 定义 将抽象部分(Abstraction)与实现部分(Implementor)分离,使它们可以独立地变化。从模式的定义上来看,我们可以知道,这里的桥梁指的就是连接抽象类与实现类...原创 2018-03-12 10:34:24 · 322 阅读 · 0 评论 -
java设计模式---组合模式(composite pattern)
java设计模式—组合模式(composite pattern)1. 定义 组合模式(Composite Pattern):组合多个对象形成树形结构以表示具有“整体—部分”关系的层次结构。组合模式对单个对象(即叶子对象)和组合对象(即容器对象)的使用具有一致性,组合模式又可以称为“整体—部分”(Part-Whole)模式,它是一种对象结构型模式。 在组合模式中引入了抽象构件类 Compon...原创 2018-03-12 11:13:32 · 326 阅读 · 0 评论 -
java设计模式---简单工厂模式(Simple Factory)
java设计模式—简单工厂模式(Simple Factory)简单工厂模式不属于23种涉及模式,简单工厂一般分为:普通简单工厂、多方法简单工厂、静态方法简单工厂。 1. 简单工厂三种模式 简单工厂方法分为三种模式:普通工厂方法模式、多个方法工厂模式、静态工厂方法模式 2. 普通工厂方法模式 就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。举例如下:(我们举一个发送...原创 2018-03-05 15:08:53 · 232 阅读 · 0 评论 -
java设计模式---工厂方法模式(Factory Method)
java设计模式—工厂方法模式(Factory Method)在之前一篇介绍的简单工厂模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到工厂方法模式,创建一个工厂接口和创建多个工厂实现类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。接下来就介绍工厂方法模...原创 2018-03-05 15:25:24 · 304 阅读 · 0 评论 -
java设计模式---抽象工厂模式(Abstract Factory)
java设计模式—抽象工厂模式(Abstract Factory)在http://blog.youkuaiyun.com/uftjtt/article/details/79446242博文中介绍的工厂方法模式有一个弊端:一个具体工厂只能创建一类产品。 1. 工厂方法和抽象工厂模式的区别 工厂方法模式和抽象工厂模式不好分清楚,他们的区别如下: 工厂方法模式: 一个抽象产品类,可以派生出多个具体产品...原创 2018-03-05 16:35:29 · 280 阅读 · 0 评论 -
java设计模式---生成器模式(Builder pattern)
java设计模式—生成器模式(Builder pattern)简介 1.1 定义 工厂类模式提供的是创建单个类的模式,而建造者模式则是将各种产品集中起来进行管理,用来创建复合对象,所谓复合对象就是指某个类具有不同的属性。 与抽象工厂的区别: 在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者最后得到产品。即建造模式可以强制实行一种分步骤进行的建造...原创 2018-03-05 20:11:16 · 399 阅读 · 0 评论 -
java设计模式---访问者模式(visitor pattern)
java设计模式—访问者模式(visitor pattern)1. 概述 访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。例如处方单中的各种药品信息就是被访问的元素,而划价人员和药房工作人员就是访问者。访问者模式使得用户可以在不修改现有系统的情况下扩展系统的功能,为这些不同类...原创 2018-03-27 10:45:03 · 590 阅读 · 0 评论