
设计模式
0山外山0
这个作者很懒,什么都没留下…
展开
-
设计模式(一)-迭代器模式(Iterator Pattern)——一个一个遍历
迭代器模式(Iterator Pattern)是 非常常用的设计模式。用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。迭代器模式属于行为型模式。示例:Iterator.javapackage com.test.dp.iterator;//迭代器实现的接口public interface Iterator { public abstract bool原创 2018-01-19 10:24:06 · 577 阅读 · 0 评论 -
设计模式(二十一)-代理模式(Proxy Pattern)——只在必要时生成实例
在代理模式(Proxy Pattern)中,一个类代表另一个类的功能。Printer.javapackage com.test.dp.Proxy.Sample;//表示带名字的打印机的类(本人)public class Printer implements Printable { private String name; public Printer() { ...原创 2018-02-10 17:48:22 · 217 阅读 · 0 评论 -
设计模式(二十二)-命令模式(Command Pattern)——命令也是类
命令模式(Command Pattern)是一种数据驱动的设计模式,它属于行为型模式。请求以命令的形式包裹在对象中,并传给调用对象。调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。Command.javapackage com.test.dp.Command.Sample.command;//表示命令的接口public interface Command {...原创 2018-02-11 09:21:36 · 234 阅读 · 0 评论 -
设计模式(十四)-责任链模式(Chain of Responsibility Pattern)——推卸责任
责任链模式(Chain of Responsibility Pattern)可以将多个对象组成一条职责链,然后按照它们在职责链上的顺序一个一个的找出到底应该谁来负责处理。Trouble.javapackage com.test.dp.ChainOfResponsibility.Sample;//表示发生问题的类,它带有问题的编号public class Trouble {原创 2018-02-06 09:00:08 · 831 阅读 · 0 评论 -
设计模式(九)-桥接模式(Bridge Pattern)——将类的功能层次结构与实现层次结构分离
桥接模式(Bridge Pattern)的作用是在“类的功能层次结构”和“类的实现层次结构”之间搭建桥梁。类的功能层次结构是为了增加新功能而产生的层次结构。1、父类中具有基本功能;2、在子类中增加新的功能;类的实现层次结构的不是方便我们增加新的方法,而是为了实现下面这样的任务分担:1、父类通过声明抽象方法来定义接口(API);2、子类通过实现具体方法来实现接口(API);原创 2018-01-30 09:26:42 · 406 阅读 · 0 评论 -
设计模式(十五)-外观模式(Facade Pattern)——推卸责任
外观模式(Facade Pattern)可以为互相关联在一起的错综复杂的类整理出高层接口。Database.javapackage com.test.dp.Facade.Sample.pagemaker;import java.io.FileInputStream;import java.io.IOException;import java.util.Properties;原创 2018-02-06 13:58:43 · 205 阅读 · 0 评论 -
设计模式(二十三)-解释器模式(Interpreter Pattern)——语法规则也是类
解释器模式(Interpreter Pattern)提供了评估语言的语法或表达式的方式,它属于行为型模式。这种模式实现了一个表达式接口,该接口解释一个特定的上下文。这种模式被用在 SQL 解析、符号处理引擎等。Node.javapackage com.test.dp.Interpreter.Sample;//表示语法树“节点”的类public abstract class Node { ...原创 2018-02-11 17:29:03 · 194 阅读 · 0 评论 -
设计模式(十六)-中介者模式(Mediator Pattern)——只有一个仲裁者
中介者模式(Mediator Pattern)中,组员向仲裁者报告,仲裁者向组员下达指示。Mediator.javapackage com.test.dp.Mediator.Sample;//定义“仲裁者”的接口(API)的接口public interface Mediator { public abstract void createColleagues();原创 2018-02-07 09:39:44 · 274 阅读 · 0 评论 -
设计模式(十七)-观察者模式(Observer Pattern)——发送状态变化通知
在观察者模式(Observer Pattern)中,当观察对象的状态发生变化时,回通知给观察者。观察者模式适用于根据对象状态进行相应处理的场景。Observer.javapackage com.test.dp.Observer.Sample;//表示观察者的接口public interface Observer { public abstract void update(原创 2018-02-07 13:21:25 · 366 阅读 · 0 评论 -
设计模式(十八)-备忘录模式(Memento Pattern)——保存对象状态
备忘录模式(Memento Pattern)可以引入表示实例状态的角色,可以在保存和恢复实例时有效的防止对象的封装性遭到破坏。使用备忘录模式可以实现应用程序的一下功能:1、Undo(撤销)2、Redo(重做)3、History(历史记录)4、Snapshot(快照)备忘录模式就是一个事先将某个时间点的实例的状态保存下来,之后在必要的时,再将实例恢复至当时的状态。Memento.javapackag...原创 2018-02-08 09:03:16 · 464 阅读 · 0 评论 -
设计模式(十九)-状态模式(State Pattern)——用类表示状态
在面向对象变成中,是用类表示对象的。在状态模式(State Pattern)中,我们用类来表示状态。State.javapackage com.test.dp.State.Sample;//表示金库状态的接口public interface State { public abstract void doClock(Context context, int hour); // 设...原创 2018-02-08 17:36:32 · 212 阅读 · 0 评论 -
设计模式(八)-抽象工厂模式(Abstract Factory Pattern)——将关联零件组装诚产品
抽象工厂的工作是将“抽象零件”组装为“抽象产品”。抽象工厂模式(Abstract Factory Pattern)不关心零件的具体实现,而是只关心接口(API)。仅使用该接口(API)将零件组装成为产品。抽象工厂模式中,子类负责方法的具体实现,子类这一层有具体的工厂,他负责将具体的零件组装成为具体的产品。Item.javapackage com.test.dp.Abstract原创 2018-01-29 16:50:26 · 349 阅读 · 0 评论 -
设计模式(十三)-访问者模式(Visitor Pattern)——访问数据结构并处理数据
访问者模式(Visitor Pattern)中,数据结构与处理被分离开来。Visitor.javapackage com.test.dp.Visitor.Sample;//表示访问者的抽象来,用它来访问文件和文件夹public abstract class Visitor { public abstract void visit(File file); publi原创 2018-02-05 09:23:39 · 768 阅读 · 2 评论 -
设计模式(二)-适配器模式(Adapter Pattern)——加个“适配器”以便于复用
适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。适配器模式有以下两种:1、类适配器模式(使用继承的适配器);2、对象适配器模式(使用委托的适配器);第一种示例:Banner.javapackage com.test.dp.adapter;//具体实现,代表“实际情况”p原创 2018-01-22 09:17:24 · 488 阅读 · 0 评论 -
设计模式(三)-模版模式(Template Pattern)——将具体处理交给子类
模版模式(Template pattern)是带有模版功能的模式,组成模版的方法被定义在父类中。在父类中定义处理流程的框架,在子类中实现具体处理。AbstractDisplay.javapackage com.test.dp.template;//模板抽象类public abstract class AbstractDisplay { public abstract voi原创 2018-01-23 09:48:19 · 239 阅读 · 0 评论 -
设计模式(十)-策略模式(Strategy Pattern)——整体的替换算法
策略模式(Strategy Pattern)可以整体的替换算法的实现部分。Hand.javapackage com.test.dp.Strategy.Sample;//算法需要计算的对象,这里代表“手势”public class Hand { public static final int HANDVALUE_GUU = 0; // 表示石头的值 public st原创 2018-01-31 09:25:58 · 410 阅读 · 0 评论 -
设计模式(四)-工厂模式(Factory Method Pattern/Factory Pattern)——将实例的生成交给子类
Factory有“工厂”的意思.用Template Method模式来构建生成实例的工厂,这就是Factory Method模式。在工厂模式中,父类决定实例的生成方式,但并不决定索要生成的具体类,具体的处理全部交给子类负责。这样就可以将生成实例的框架和实际负责生成实例的类解耦。Product.javapackage com.test.dp.FactoryMethod.Sample.fr原创 2018-01-24 09:44:41 · 429 阅读 · 0 评论 -
设计模式(十一)-组合模式(Composite Pattern)——容器与内容的一致性
组合模式(Composite Pattern)是能够使容器与内容具有一致性,创造出递归结构的模式。Entry.javapackage com.test.dp.Composite.Sample;//抽象类,表示“目录条目”,用来实现File和Directory的一致性public abstract class Entry { public abstract String g原创 2018-02-01 09:07:22 · 284 阅读 · 0 评论 -
设计模式(五)-单例模式(Singleton Pattern)——只有一个实例
程序运行时,通常回生成很多实例。但是,当我们想在程序中表示某个东西只会存在一个时,就会有“只能创建一个实例”的需求。当然,只要我们多加注意,只new一次也能达到目的。但是,我们肯定都不想“多加注意”,那应当怎么做呢?1、想确保任何情况下都绝对只有一个实例;2、想在程序上表现出“只有一个实例”;像这样的确保只生成一个实例的模式倍乘坐单例模式(Singleton Pattern)。原创 2018-01-25 09:36:12 · 504 阅读 · 1 评论 -
设计模式(十二)-装饰器模式(Decorator Pattern)——装饰边框与被饰物的一致性
装饰器模式(Decorator Pattern)能不断的为对象添加装饰。Display.javapackage com.test.dp.Decorator.Sample;//抽象类,用于显示字符串public abstract class Display { public abstract int getColumns(); // 获取横向字符数原创 2018-02-02 09:19:30 · 397 阅读 · 0 评论 -
设计模式(六)-原型模式(Prototype Pattern)——通过复制生成实例
原型模式(Prototype Pattern)是不根据类来生成实例,而是根据实例来生成新实例的模式。在以下情况,我们不能根据类来生成实例,而要根据现有的实例来生成新的实例:1、对象种类繁多,无法将它们整合到一个类中时; 需要处理的对象太多,如果将它们分别作为一个类,必须要编写很多的类文件。2、难以根据类生成实例时; 生成实例的过程泰国复杂,很难根据类来生成实例。原创 2018-01-26 09:32:52 · 332 阅读 · 0 评论 -
设计模式(二十)-享元模式(Flyweight Pattern)——共享对象,避免浪费
当程序中需要大量对象时,如果都是用new关键字来分配内存,将会消耗大量的内存空间。享元模式(Flyweight Pattern)通过尽量共享实例变量来避免new出实例。当需要某个实例时,并不总是通过new关键字来生成实例,而是尽量公用已经存在的实例。这就是Flyweight模式的核心内容。big0.txt(数字0)....######........##......##......##.......原创 2018-02-09 09:11:20 · 263 阅读 · 0 评论 -
设计模式(七)-建造者模式(Builder Pattern)——组装复杂的实例
建造者模式(Builder Pattern)用于组装具有复杂结构的实例。Builder.javapackage com.test.dp.Builder.Sample;//编写文档的抽象类public abstract class Builder { public abstract void makeTitle(String title); public abstr原创 2018-01-29 09:03:12 · 1045 阅读 · 0 评论 -
Java高级工程师常见面试题(九)-设计模式
1. 单例模式:饱汉、饿汉。以及饿汉中的延迟加载,双重检查1)饿汉模式://饿汉模式,很饿很着急,所以类加载时即创建实例对象public class Singleton1 {private static Singleton1 singleton = new Singleton1();private Singleton1(){}public static Singlet...原创 2019-06-24 15:12:57 · 1237 阅读 · 0 评论