设计模式
飞鸟来了
这个作者很懒,什么都没留下…
展开
-
单例模式
保证一个类仅有一个实例,并提供访问它的全局访问点。 可以避免一个全局使用的类频繁的创建与销毁。 判断实例是否存在如果存在直接返回,不存在就创建。 私有构造函数,创建实例,获取实例方法接口。public class SingleObject { //创建 SingleObject 的一个对象 private static SingleObject instance = new Si原创 2017-10-26 18:03:33 · 142 阅读 · 0 评论 -
迭代器模式
提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。存储数据和遍历数据的职责分离, 抽象裂变类,抽象迭代器类。 迭代器接口:interface Iterator { public Object next(); public boolean hasNext(); } class ConcreteIterator implements Iter原创 2017-10-31 16:43:06 · 123 阅读 · 0 评论 -
中介者模式
多个类相互耦合,形成了网状结构,中介者模式可以将网状结构分离为星状结构。 对象和对象不直接通信,通过使用中介进行交互。import java.util.Date;public class ChatRoom { public static void showMessage(User user, String message){ System.out.println(new Date原创 2017-10-31 17:01:10 · 166 阅读 · 0 评论 -
备忘录模式
在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。存储对象状态:public class Memento { private String state; public Memento(String state){ this.state = state; } public String getState(){ return stat原创 2017-11-01 09:48:58 · 138 阅读 · 0 评论 -
观察者模式
定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 Subject :import java.util.ArrayList;import java.util.List;public class Subject { private List<Observer> observers = new ArrayList<Observe原创 2017-11-01 15:06:39 · 133 阅读 · 0 评论 -
策略模式
定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 算法接口:public interface Strategy { public int doOperation(int num1, int num2);}算法实现:public class OperationAdd implements Strategy{ @Override public int doOpera原创 2017-11-01 16:58:46 · 116 阅读 · 0 评论 -
模版模式
意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 主要解决:一些方法通用,却在每一个子类都重新写了这一方法。 何时使用:有一些通用的方法。 如何解决:将这些通用算法抽象出来。 关键代码:在抽象类实现,其他步骤在子类实现。核心,将通用算法,抽象出来。 抽象方法:public abstract class Ga原创 2017-11-01 17:09:49 · 114 阅读 · 0 评论 -
设计模式
设计模式分类创建设计模式:创建对象的同时隐藏创建逻辑工厂模式(Factory Pattern)抽象工厂模式(Abstract Factory Pattern)单例模式(Singleton Pattern)建造者模式(Builder Pattern)原型模式(Prototype Pattern)结构型模式:关注类和对象的组合适配器模式(Adapter Pattern)桥接模式(Bridg原创 2017-10-26 14:41:15 · 106 阅读 · 0 评论 -
工厂模式
1.创建对象的最佳方式。 我们明确地计划不同条件下创建不同实例时,创建过程在其子类执行。 1创建一个接口:public interface Shape { void draw();}2.创建实现接口的实体类public class Rectangle implements Shape { @Override public void draw() { System原创 2017-10-26 14:55:43 · 130 阅读 · 0 评论 -
责任链模式
为请求创建一个接受者对象的链。通常每一个接受者都包含另一个接受者的应用,如果一个对象不能处理该请求,那么就会把相同的请求传递给下一个接受者。 实例:JS中的事件冒泡 将请求的发送者和接受者解耦。 实现方法:拦截的类都实现统一接口。包含下一个处理对象的引用。统一的抽象记录器:public abstract class AbstractLogger { public static int I原创 2017-10-31 10:03:38 · 133 阅读 · 0 评论 -
代理模式
一个类代表另一个类的功能。由于某些原因,比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),直接访问会给使用者或者系统结构带来很多麻烦,我们可以在访问此对象时加上一个对此对象的访问层。 代理类中存有实现类的引用。 1.接口-实现类public interface Image { void display();}public class RealImage implem原创 2017-10-30 17:36:30 · 145 阅读 · 0 评论 -
原型模式
就是实例克隆。利用已有的原型对象,快速的生成原型对象一样的实例。 创建一个实现Clonable 接口的抽象类:public abstract class Shape implements Cloneable { private String id; protected String type; abstract void draw(); public String getType原创 2017-10-27 15:56:53 · 129 阅读 · 0 评论 -
建造者模式
1.肯德基中,汉堡,可乐,薯条等不变,但是组合出来的套餐是多样的。public class BuilderPatternDemo { public static void main(String[] args) { MealBuilder mealBuilder = new MealBuilder(); //构造器 Meal vegMeal = mealBuilder.p原创 2017-10-27 12:34:01 · 148 阅读 · 0 评论 -
适配器模式
作为两个不兼容接口的桥梁。比如读卡器。 现有的类不能满足现有的接口需要,通过继承或者依赖实现! 主要解决正常运行系统的接口: 1接口一实现(实现增强功能)public interface MediaPlayer { public void play(String audioType, String fileName);}public interface AdvancedMediaPl原创 2017-10-27 17:58:55 · 138 阅读 · 0 评论 -
过滤器模式
使用不同的标准过滤一组对象,可以结合多个标准获得单一标准。 1.过滤对象public class Person { private String name; private String gender; private String maritalStatus; public Person(String name,String gender,String maritalStat原创 2017-10-30 11:53:25 · 174 阅读 · 0 评论 -
组合模式
把一组相似的对象当作一个单一的对象。 将对象组合成树形结构以表示“部分-整体”的层次机构。被操作的对象,该对象带有该类的对象列表:import java.util.ArrayList;import java.util.List;public class Employee { private String name; private String dept; private in原创 2017-10-30 13:58:09 · 153 阅读 · 0 评论 -
装饰器模式
动态的给一个对象添加一些额外的职责职责。 对某个对象而不是整个类添加一些功能。 将需要装饰的对象传递给,装饰器,调用装饰器,即可让被装饰对象实现其他的功能。 1.接口 -实现类public interface Shape { void draw();}public class Rectangle implements Shape { @Override public void原创 2017-10-30 15:29:46 · 141 阅读 · 0 评论 -
外观模式
系统由多个子系统组成,为子系统中的一组接口提供一个一致的界面。 客户端请求直接调用多个子系统模块,现在就只需要调用一个接口,该接口去调用需要的子系统。 Java的分层模式就是这种设计1.接口-实现类public class Rectangle implements Shape { @Override public void draw() { System.out.print原创 2017-10-30 15:54:59 · 771 阅读 · 0 评论 -
桥接模式
抽象化与实现化解耦。 客户端提交一个请求给shape ,shape 将该请求转发给DrawAPI ,DrawAPI 完成具体的实现。 shape 和 DrawAPI 就是桥接问题。桥接实现接口:public interface DrawAPI { public void drawCircle(int radius, int x, int y);}桥接实现:public class R原创 2017-10-30 11:31:04 · 178 阅读 · 0 评论 -
抽象工厂
抽象工厂是围绕一个超级工厂创建其他工厂。 1.创建接口//shapepublic interface Shape { void draw();}//colorpublic interface Color { void fill();}2.创建实现类public class Rectangle implements Shape { @Override public v原创 2017-10-26 15:51:35 · 148 阅读 · 0 评论