设计模式
小达人Fighting
这个作者很懒,什么都没留下…
展开
-
设计模式简单概述
》》设计模式常常被分成如下三类: ---创建型:创建对象时,不再直接实例化对象;而是根据特定场景,由程序来确定创建对象的方式,从而保证更高的性能、更好的架构优势。 创建型模式主要有:简单工厂模式(并不是23中设计模式之一)、工厂方法(Factory Method)、抽象工厂模式(Abstract Factory)、单例模式(S...原创 2018-03-07 21:42:16 · 161 阅读 · 0 评论 -
策略(Strategy)模式-----------整体地替换算法
》》Strategy 的意思是“策略”,指的是与敌军对垒时行军作战的方法。在 编程中,我们可以将它理解为“算法”。》》使用Strategy 可以整体地替换算法的实现部分。能够整体地替换算法, 能让我们轻松地以不同的算法去解决同一个问题,这种模式就是 Strategy 模式。----------------------下面的示例程序的功能原创 2018-03-26 15:11:00 · 312 阅读 · 0 评论 -
状态(State)模式--------用类表示状态
》》在 State 模式中,我们用类来表示状态。 以类来表示状态后,我们就能通过切换类来 方便地改变对象的状态。当需要增加新的状态时, 如何修改代码这个问题也会很明确。------------------下面的示例程序:金库报警系统原创 2018-03-27 12:11:30 · 1242 阅读 · 0 评论 -
观察者(Observer)模式----------发送状态变化通知
》》在 Observer 模式中,当观察对象的状态发生变化时,会通知 给观察者。Observer 模式适用于根据对象状态进行相应处理的 场景。-------------------示例程序:是一个简单的示例程序,观察者将观察 一个会生成数值的对象,并将它生成的数值结果显示出来。不过, 不同的观察者的显示方式不一样。DigitObserver 会以原创 2018-03-28 17:50:02 · 704 阅读 · 0 评论 -
Factory Method模式----将实例的生成交给子类
1. Factory Method 模式---------- 将实例的生成交给子类 》》 Factory 有“工厂”的意思。用 Template Method 模式来构建生成实例的工厂,这就是 Factory Method 模式。 》》 在 Factory Method 模式中,父类决定实例的生成方式,但并不决定所要生成的具体的类,具体的处理 全部交给...原创 2019-03-09 10:59:01 · 176 阅读 · 0 评论 -
Prototype(原型)模式---通过复制生成实例
1.Prototype 模式 》》 在 Java 中,我们可以使用 new 关键字指定类名来生成类的实例。像这样使用 new 来生成实例时, 是必须指定类名的。但是,在开发过程中,有时候也会有“在不指定类名的前提下生成实例”的需求。 例如,在以下情况,我们就不能根据类来生成实例,而要根据现有的实例来生成新的实例。 (1)、对象种类繁多,无法将它们整合到一...原创 2019-03-11 17:10:12 · 535 阅读 · 1 评论 -
Template Method模式----将具体处理交给子类
1. Template Method 模式 1)、什么是模板 2)、什么是Template Method 模式 》》 Template Method 模式是带有模板功能的模式,组成模板的方法被定义在父类中。 由于这些方法是抽象方法,所以只查看父类的代码是无法知道这些方法最终会进行 何种具体处理的,唯一能知道的就是父类是如何调用这...原创 2019-03-08 11:52:39 · 168 阅读 · 0 评论 -
Decorator模式------装饰边框与被装饰物的一致性
1.》》不断地为对象装饰的设计模式称为Decorator模式。2.示例程序》》功能:给文字添加装饰边框。这里所谓的装饰边框是指用“ - ” “ + ” “ | ” 等字符组成的边框。》》类的一览表》》示例程序的类图3.代码实现》》 Display 抽象类 /** * Display 是可以显示多行字符串的抽象类...原创 2019-05-02 18:17:59 · 218 阅读 · 0 评论 -
Chain of Responsibility 模式-----推卸责任模式
》》 -----当外部请求程序进行某个处理,但程序暂时无法直接决定由哪个对象负责处理时,就需要推卸责任。 在这种情况下,我们可以考虑将多个对象组成一条职责链,然后按照它们的职责链上的顺序一个一个 地找出到底应该谁来负责处理。 -----使用 Chain of Responsibility模式可以弱化“请求方”和“处理方”之间...原创 2019-05-31 11:10:17 · 254 阅读 · 0 评论 -
Memento模式---------保存对象状态
》》 -------使用面向对象编程的方式实现撤销功能时,需要先保存实例的相关状态信息。然后,在撤销时, 还需要根据所保存的信息将实例恢复到原来的状态。 --------要想恢复实例,需要一个可以自由访问实例内部结构的权限。但是,如果稍不注意,又有可能 会将依赖于实例内部结构的代码分散地编程在程序中的各个地方,导致程序变得难以维护。这...原创 2019-05-31 20:51:24 · 174 阅读 · 0 评论 -
Flyweight (享元)模式 -------- 共享对象,避免浪费
》》 ------ flyweight是“轻量级”的意思。对象在计算机中是虚拟存在的东西,它的“重”和“轻”并非指实际重量, 而是它们“所使用的内存大小”。使用内存多的对象就是“重”对象,使用内存少的对象就是“轻”对象。 ------当程序中需要大量对象时,如果都使用 new关键字来分配内存,将会消耗大量内存空间。 ------ Flyw...原创 2019-06-01 17:40:48 · 179 阅读 · 0 评论 -
访问者(Visitor)模式--------访问数据结构并处理数据
》》在Visitor 模式中,数据结构与处理被分离开来。-------------下面的示例程序中:文件与文件夹作为访问者要访问的数据结构, 访问者会访问文件与文件夹,然后显示出文件和文件夹的一览。》》示例程序的类图: 》》Visitor类: package visitor;/* * 访问者类 */原创 2018-03-21 18:09:57 · 423 阅读 · 0 评论 -
中介者(Mediator)模式--------------只有一个仲裁者
》》组员向仲裁者报告,仲裁者向组员下达指示。组员之间不再相互 询问和相互指示。》》在该模式中:一方面,当发生麻烦事情的时候,通知仲裁者;当 发生涉及全体组员的事情时,也通知仲裁者。当仲裁者下达指示时, 组员会立即执行。团队组员之间不再互相沟通并私自做出决定,而 是发生任何事情都向仲裁者报告。另一方面,仲裁者站在整个团队 的角度对组员上报原创 2018-03-25 13:06:19 · 472 阅读 · 0 评论 -
单例模式
》》单例模式是指确保一个类仅有一个唯一的实例,并且提供一个全局的访问点。》》实现单例模式的思路是,为了防止客户程序利用构造方法创建多个对象,将构造方法声明为 private 类型。其原因是,如果构造方法是 public 类型的,则客户程序永远可以使用该构造器方法创建不同的对象。但这样做的一个问题是,如果一个类的构造方法是 private 的,则 其他类就无法使用该原创 2018-03-07 22:15:52 · 174 阅读 · 0 评论 -
抽象工厂(Abstract Factory)模式
》》所谓工厂,是将零件组装成产品的地方,这是一项具体的工作。》》抽象工厂的工作是将“抽象零件”组装为“抽象产品”。》》在抽象工厂模式中,我们并不关心零件的具体实现,而是只关心接口(API)。我们仅 使用该接口(API)将零件组装成为产品。》》在抽象工厂中,在子类这一层有具体的工厂,它负责将具体的零件组装为具体的产品。》》如下示例程序的功能是将带有层次关系的链接的集合制原创 2018-03-15 16:07:17 · 356 阅读 · 0 评论 -
Composite(组合)模式----容器和内容的一致性
》》能够使容器与内容具有一致性,创造出递归结构的模式就是Composite 模式。-----------以下示例程序的功能是列出文件和文件夹的一览。》》示例程序的类图: ------------------------ 《Entry 类》 package composite;/* * 抽象类,用来实现 File 类和原创 2018-03-16 11:32:24 · 378 阅读 · 0 评论 -
适配器(Adapter)模式
》》用于填补“现有的程序”和“所需的程序”之间的差异的设计模式就是Adapter 模式。》》Adapter 模式也被称为 Wapper 模式。Wapper 有“包装器”的意思,就像用精美的 包装纸将普通商品包装成礼物那样,替我们把某样东西包起来,使其能够用于其他 用途的东西就被称为“包装器”或是”适配器“。》》Adapter 模式有两种: **原创 2018-03-17 17:35:37 · 229 阅读 · 0 评论 -
单例(Singleton)模式补充
》》在 Singleton 模式中,只有 Singleton 这一角色。Singleton 角色中有一个返回唯一实例的static 方法。 该方法总会返回同一个实例。》》Singleton 模式对实例的数量设置了限制。设置限制其实就是为程序增加了一项前提条件。》》 相关的设计模式:(在以下模式中,多数情况下只会生成一个实例) ***AbstractFactory原创 2018-03-11 17:58:57 · 132 阅读 · 0 评论 -
Builder(生成器)模式
》》代码实践如下: * * Builder是一个声明了编写文档的方法的抽象类 */public abstract class Builder {//编写标题的方法public abstract void makeTitle(String title);//编写字符串的方法public abstract void makeString(String str原创 2018-03-12 12:37:11 · 555 阅读 · 0 评论 -
外观(Facade)模式------简单窗口
》》使用Facade 模式可以为互相关联在一起的错综复杂的类整理出高层接口(API)。 其中的 Facade 角色可以让系统外只有一个简单的接口(API)。而且,Facade 角色还会考虑到系统内部各个类之间的责任关系和依赖关系,按照正确的顺序调 用各个类。----------------下面的示例程序中:只考虑一个由3个简单的类构成的原创 2018-03-18 13:20:03 · 418 阅读 · 0 评论 -
桥接(Bridge)模式----将类的功能层次结构与实现层次结构分离
》》Bridge 模式是将两样东西连接起来,它们分别是类的功能层次结构和 类的实现层次结构。》》类的层次结构的两个作用: ------希望增加新功能时 **** 父类具有基本功能 ****子类增加新的功能 ------希望增加新的实现时 ***原创 2018-03-19 18:27:02 · 300 阅读 · 0 评论 -
命令(Command)模式--------命令也是类
》》表示命令的类的实例,即可以用"物"来表示。要想管理工作的历史记录, 只需管理这些实例的集合即可,而且还可以随时再次执行过去的命令, 或是将过去的命令整合为一个新的命令并执行。》》Command 有时也称为事件(event) ,它与“事件驱动程序”中的 “事件“是一样的意思。当发生点击鼠标、按下键盘按键等事件时,我们 可以先原创 2018-03-24 12:10:57 · 1134 阅读 · 0 评论 -
迭代器(Iterator)模式-------一个一个遍历
》》Iterator 模式用于在数据集合中按照顺序遍历集合。--------------------下面的示例程序的作用是将书(Book)放置到书架(BookShelf)中, 并将书的名字按顺序显示出来。》》示例程序的示意图: 》》原创 2018-03-20 18:17:29 · 2908 阅读 · 0 评论 -
Proxy模式------只在必要时生成实例
》》 ------ Proxy是“代理人”的意思,它指的是代替别人进行工作的人。当不一定需要本人亲自进行工作时, 就可以寻找代理人去完成工作。但代理人毕竟只是代理人,能代替本人做的事情终究是有限的。 因此,当代理人遇到无法自己解决的事情时就会去找本人解决该问题。 -------在面向对象编程中,“本人”和“代理人”都是...原创 2019-06-01 21:00:09 · 198 阅读 · 0 评论