
Java设计模式
文章平均质量分 87
潘建南
这个作者很懒,什么都没留下…
展开
-
(10)Java设计模式 - 桥接模式(Bridge Pattern)
简单来讲,桥接模式是一个两层的抽象。桥接模式是用于“把抽象和实现分开,这样它们就能独立变化”。 桥接模式使用了封装、聚合,可以用继承将不同的功能拆分为不同的类。1、桥接模式的故事电视和遥控器(图中有错字)是一个完美展示两层抽象的例子。你有一个电视机的接口,还有一个遥控器的抽象类。我们都知道,将它们中任何一个定义为一个具体类都不是好办法,因为其它厂家会有不同的实现方法。 2、桥接模式Java示例原创 2016-04-13 21:19:16 · 834 阅读 · 0 评论 -
(14)Java设计模式 - 模板模式(Template Pattern)
模板模式在模板模式(Template Pattern)中,一个抽象类公开定义了执行它的方法的方式/模板。它的子类可以按需要重写方法实现,但调用将以抽象类中定义的方式进行。这种类型的设计模式属于行为型模式。介绍意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。主要解决:一些方法通用,却在每一个子类都重新写了...转载 2018-07-24 13:49:36 · 4301 阅读 · 0 评论 -
(15)Java设计模式 - 中介者模式(Mediator Pattern)
中介者模式中介者模式(Mediator Pattern)是用来降低多个对象和类之间的通信复杂性。这种模式提供了一个中介类,该类通常处理不同类之间的通信,并支持松耦合,使代码易于维护。中介者模式属于行为型模式。介绍意图:用一个中介对象来封装一系列的对象交互,中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。主要解决:对象与对象之间存在大量的关联关系,...原创 2018-07-24 14:39:09 · 803 阅读 · 0 评论 -
(16)Java设计模式 - 访问者模式(Visitor Pattern)
1. 概述 访问者模式是一种较为复杂的行为型设计模式,它包含访问者和被访问元素两个主要组成部分,这些被访问的元素通常具有不同的类型,且不同的访问者可以对它们进行不同的访问操作。在使用访问者模式时,被访问元素通常不是单独存在的,它们存储在一个集合中,这个集合被称为“对象结构”,访问者通过遍历对象结构实现对其中存储的元素的逐个操作。访问者模式是一种对象行为型模式。2. 适用场景 ...转载 2018-07-24 15:13:56 · 1771 阅读 · 0 评论 -
(17)Java设计模式 - 解释器模式(Interpreter Pattern)
解释器模式解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。介绍意图:给定一个语言,定义它的文法表示,并定义一个解释器,这个解释器使用该标识来解释语言中的句子。主要解决:对于一些固定文法构建一个解释句子的解释器。何时使用:如果一...转载 2018-07-24 15:26:55 · 1712 阅读 · 0 评论 -
(18)Java设计模式 - 备忘录模式(Memento Pattern)
备忘录模式备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为型模式。介绍意图:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。主要解决:所谓备忘录模式就是在不破坏封装的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样可以在以后将对象恢复到原先保存的状态。何时使用:很多时候我们总是需...转载 2018-07-24 15:51:29 · 811 阅读 · 0 评论 -
(19)Java设计模式 - 状态模式(State Pattern)
状态模式在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。介绍意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。何...转载 2018-07-24 16:32:50 · 2348 阅读 · 0 评论 -
(20)Java设计模式 - 观察者模式(Observer Pattern)
观察者模式当对象间存在一对多关系时,则使用观察者模式(Observer Pattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。介绍意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用:一个对...转载 2018-07-24 16:58:40 · 981 阅读 · 0 评论 -
(21)Java设计模式 - 责任链模式(Chain of Responsibility Pattern)
责任链模式顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链。这种模式给予请求的类型,对请求的发送者和接收者进行解耦。这种类型的设计模式属于行为型模式。在这种模式中,通常每个接收者都包含对另一个接收者的引用。如果一个对象不能处理该请求,那么它会把相同的请求传给下一个接收者,依此类推。介绍意图:避免请求发送者与接收者耦...转载 2018-07-24 21:16:50 · 3237 阅读 · 0 评论 -
(22)Java设计模式 - 迭代器模式(Iterator Pattern)
迭代器模式迭代器模式(Iterator Pattern)是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。介绍意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。主要解决:不同的方式来遍历整个整合对象。何时使用:遍历一个聚合对象。如何解决:把在元素之间游...转载 2018-07-24 21:27:59 · 1480 阅读 · 0 评论 -
(23)Java设计模式 - 命令模式(Command Pattern)
命令模式命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。介绍意图:将一个请求封装成一个对象,从而使您可以用不同的请求对客户进行参数化。主要解决:在软件系统中,行为请求者与行为实现者通常是一种紧耦合的关系,但某些场合,比如需...转载 2018-07-25 12:30:44 · 761 阅读 · 0 评论 -
(13)Java设计模式 - 策略模式(Strategy Pattern)
策略模式在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为型模式。在策略模式中,我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象改变 context 对象的执行算法。介绍意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,...转载 2018-07-24 13:31:27 · 2820 阅读 · 0 评论 -
(12)Java设计模式 - 享元模式(Flyweight Pattern)
介绍一个系统中若存在大量相同或相似的对象(比如26个英文字母),则只共享一份就可以了(并非单例模式),没有必要为每份相同的东西还都单独实例化出一个对象,浪费性能。(有点缓存的意思)比如26个英文字母,一个文本中有10MB的26个英文字母,那你解析出来的时候需要为每一个字母都创建一个对象的话(10M那么大,对象数不可直视。。。),内存肯定扛不住。所以可以用享元模式,只创建26个对象进行共享就...转载 2018-07-23 22:58:01 · 457 阅读 · 0 评论 -
(11)Java设计模式 - 组合模式(Composite Pattern)
介绍 我们对于这个图片肯定会非常熟悉,这两幅图片我们都可以看做是一个文件结构,对于这样的结构我们称之为树形结构。在数据结构中我们了解到可以通过调用某个方法来遍历整个树,当我们找到某个叶子节点后,就可以对叶子节点进行相关的操作。我们可以将这颗树理解成一个大的容器,容器里面包含很多的成员对象,这些成员对象即可是容器对象也可以是叶子对象。但是由于容器对象和叶子对象在功能上面的区别,使得...转载 2018-07-23 22:48:43 · 685 阅读 · 0 评论 -
(2)Java设计模式 - 抽象工厂方法模式(Abstract Factory Pattern)
介绍工厂方法模式有一个问题就是,类的创建依赖工厂类,也就是说,如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则,所以,从设计角度考虑,有一定的问题,如何解决?就用到抽象工厂模式,创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了,不需要修改之前的代码。因为抽象工厂不太好理解,我们先看看图,然后就和代码,就比较容易理解。请看例子:public interf...转载 2016-04-13 21:44:10 · 1225 阅读 · 0 评论 -
(4)Java设计模式 - 建造者模式(Builder Pattern)
建造者模式的关键特性是它将一个建造过程分解成很多步骤,也可以说,每个产品的建造会遵循同样的流程,不过流程内的每一个步骤都不尽相同。在下面这个故事里,我们会定义一个叫作星巴克饮料机(StarbucksBuilder)的机器,用于制造星巴克饮料。StarbucksBuilder要经过很多步骤来做一杯饮料,比如buildSize() 和 buildDrink(),并且最终返回制成的饮料。1. 建...转载 2016-04-13 21:58:49 · 1500 阅读 · 2 评论 -
(5)Java设计模式 - 原型模式(Prototype Pattern)
介绍原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。模式结构 主要角色:Prototype(抽象原型类):声明克隆自身的接口。 ConcretePrototype(具体原型类):实现克隆的具体操作。 Client(客户类):让一个原型克隆自身,从而获得一个新的对象。...转载 2016-04-13 22:07:55 · 986 阅读 · 0 评论 -
(6)Java设计模式 - 适配器模式(Adapter Pattern)
介绍我们接着讨论设计模式,上篇文章我讲完了5种创建型模式,这章开始,我将讲下7种结构型模式:适配器模式、装饰模式、代理模式、外观模式、桥接模式、组合模式、享元模式。其中对象的适配器模式是各种模式的起源,我们看下面的图: 适配器模式将某个类的接口转换成客户端期望的另一个接口表示,目的是消除由于接口不匹配所造成的类的兼容性问题。主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模...转载 2016-04-13 22:12:08 · 1323 阅读 · 0 评论 -
(7)Java设计模式 - 装饰模式(Decorator Pattern)
介绍在阎宏博士的《JAVA与模式》一书中开头是这样描述装饰(Decorator)模式的: 装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上更多的责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象...转载 2016-04-13 22:16:38 · 1163 阅读 · 0 评论 -
(8)Java设计模式 - 代理模式(Proxy Pattern)
介绍代理模式(Proxy Pattern)也叫做委托模式,为其他对象提供一种代理以控制对这个对象的访问。结构 通用类图如下:代理模式包含如下角色:Subject(抽象主题):可以是接口,也可以是抽象类。 RealSubject(真实主题):业务逻辑的具体执行者。 ProxySubject(代理主题):内部含有RealSubject的引用,负责对真实角色的调用,并在真实主...转载 2016-04-13 22:19:25 · 1448 阅读 · 0 评论 -
(1)Java设计模式 - 工厂方法模式(Factory Method Pattern)
介绍工厂方法模式(Factory Method Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。 工厂方法模式分为三种:1. 普通工厂方法模式就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建...转载 2016-04-13 21:36:21 · 1918 阅读 · 0 评论 -
(9)Java设计模式 - 外观模式(Facade Pattern)
简介外观模式是一种使用频率非常高的结构型设计模式,它通过引入一个外观角色来简化客户端与子系统之间的交互,为复杂的子系统调用提供一个统一的入口,降低子系统与客户端的耦合度,且客户端调用非常方便。1. 外观模式概述 不知道大家有没有比较过自己泡茶和去茶馆喝茶的区别,如果是自己泡茶需要自行准备茶叶、茶具和开水,如图1(A)所示,而去茶馆喝茶,最简单的方式就是跟茶馆服务员说想要一杯什...原创 2016-04-14 12:14:58 · 2347 阅读 · 0 评论 -
Java单例的七种写法
单例定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。单例模式结构图:单例模式有多种写法各有利弊,现在我们来看看各种模式写法。1. 饿汉模式public class Singleton { private static Singleton instance = new Singleton(); private Singleton ()...原创 2018-07-23 14:12:44 · 573 阅读 · 0 评论 -
简单玩转23种Java设计模式
什么是设计模式设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向对象的软件开发人员所采用。设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。设计模式是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码...原创 2019-01-02 15:18:46 · 6996 阅读 · 0 评论