设计模式
Carl_Hugo
Knowledge is Power
展开
-
抽象工厂模式
抽象工厂模式:为一组相关或者相互依赖的对象提供一个接口,而且无需指定他们的具体类。工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。用了工厂方法模式的数据访问程序User.java用户类(只有ID和Name两个字段)public class User { private int id; private String name; public int getI原创 2017-02-16 16:45:56 · 205 阅读 · 0 评论 -
命令者模式
命令模式:将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化抽象实例Receiver.java/** * 命令的接受者 * @author Carl_Hugo */public class Receiver { public void action(){ System.out.println("执行请求"); }}Command.java/**原创 2017-02-23 19:27:07 · 237 阅读 · 0 评论 -
职责链模式
职责链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象练成一个链,并沿着这个链传递该请求,直到有一个对象处理它为止。抽象实例Handler.javapackage zx.chainofresponsibility.test1;/** * 处理器类 * @author Carl_Hugo */public abstract class Handler原创 2017-02-23 20:40:29 · 237 阅读 · 0 评论 -
中介者模式
中介者模式:用一个中介对象来分装一系列对象的交互。中介者使各个对象不需要显式的互相引用,从而使其耦合松散,而且可以独立的改变他们之间的交互。 Colleague:抽象同事类 ConcreteColleague:具体同事类 Mediator:抽象中介者,定义同事对象到中介者对象的接口。 ConcreteMediator:具体中介者对象,实现抽象类的方法。抽象实例Colleague.javapu原创 2017-02-23 21:59:24 · 174 阅读 · 0 评论 -
享元模式
享元模式:运用共享技术有效的支持大量细粒度的对象。 抽象实例Flyweight.javapublic abstract class Flyweight { /** * 通过这个接口flyweight可以接受并作用于外部状态 * @param extrinsicstate 外在状态 */ public abstract void operation(in原创 2017-02-24 09:48:00 · 263 阅读 · 0 评论 -
解释器模式
解释器模式:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。抽象实例User.javapublic class Context { private String input; private String output; public String getInput() { return input; }原创 2017-02-24 11:05:21 · 234 阅读 · 0 评论 -
访问者模式
访问者模式:表示一个作用于某对象结构中的各元素的操作,它使你可以在不改变各元素类的前提下定义作用于这些元素的新操作。简单的面向对象实现Person.javapublic abstract class Person { protected String action; /** * 得到结论或反应 */ public abstract void getConclu原创 2017-02-27 14:57:12 · 204 阅读 · 0 评论 -
简单工厂模式
简单的工厂模式:通过加载传入的字符串,返回所需特定的实现类创建的对象 接口Operation及其各种的实现类package zx.simplefactorypattern.test1;public interface Operation { public double getResult(double number1,double number2) throws Exception;原创 2016-07-04 19:16:04 · 300 阅读 · 0 评论 -
工厂方法模式
工厂方法模式(Factory Method):定义一个创建对象的接口,让子类决定实例化哪个类。工厂方法使一个类的实例化延迟到子类。Operation.javapublic interface Operation { public double getResult(double number1,double number2) throws Exception;}class Operatio原创 2017-02-14 11:32:32 · 214 阅读 · 0 评论 -
代理模式
代理模式的定义:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不适合或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。静态代理简单实例Subject.javapublic interface Subject { public void Request();}RealSubject.javapublic class RealSubject原创 2017-02-14 10:43:05 · 246 阅读 · 0 评论 -
桥接模式
桥接模式:将抽象部分与它的实现部分分离,使他们能够独立的变化。 合成/聚合复用原则:尽量使用合成/聚合,尽量不要使用类继承。 聚合表示的是一种弱的拥有关系,体现了A对象可以包含B对象,但B对象不是A对象的一部分;合成则是一种强的拥有关系,体现了严格的整体与部分的关系,部分与整体的生命周期是一样的。抽象实例 Implementor.javapublic abstract class Im原创 2017-02-23 14:53:06 · 188 阅读 · 0 评论 -
单例设计模式
package cn.itcast.single;/* 单例设计模式: 懒汉单例设计模式(线程安全问题 的解决方案): 步骤: 1. 私有化构造函数。 2. 声明本类引用类型变量,但是不要创建对象。 3. 声明一个公共静态的方法获取本类的对象,获取之前先判断是否已经创建了本类的对象了,如果已经创建了原创 2016-07-04 19:05:46 · 284 阅读 · 0 评论 -
迭代器模式
迭代器模式:提供一种方法顺序访问一个聚合对象的各个元素,而又不暴露该对象的内部表示。正向迭代器实现Iterator.java-迭代器抽象类public abstract class Iterator { //得到开始对象 public abstract Object first(); //得到下一个对象 public abstract Object next();原创 2017-02-23 12:56:47 · 185 阅读 · 0 评论 -
状态模式
状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 解决的问题:主要解决的是当控制一个对象的转换表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一些列类中,可以把复杂的逻辑判断简单化。 模式的角色: - 上下文环境(Context) - 抽象状态(State) - 具体状态(Concrete State)Work.javapublic class W原创 2017-02-21 10:38:19 · 205 阅读 · 0 评论 -
适配器模式
适配器模式:将一个类的接口转换成客户希望的另外一个接口。 **解决的问题:**Adapter接口使得原本由于接口不兼容而不能一起工作的类可以一起工作。 模式中的角色: - 目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。 - 需要适配的类(Adaptee):需要适配的类 - 适配器(Adapter):通过包装一个需要适配的对象,把原接口转换为目标接口。原创 2017-02-21 11:05:22 · 197 阅读 · 0 评论 -
装饰者设计模式
装饰者设计模式:增强一个类的功能,而且还可以让这些装饰类互相装饰 person.javapackage zx.decorator.test2;public class Person { public Person(){}; private String name; public Person(String name){ this.name=name;原创 2016-07-03 21:22:53 · 375 阅读 · 0 评论 -
备忘录模式
备忘录模式:主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象。 模式角色: - Originator(发起人):负责创建一个备忘录Memento。 - Memento(备忘录):负责存储Originator对象的内部状态。 - CareTaker(管理者):负责保存好备忘录Mementooriginator.java-(发起者类,用于创建一个新的备忘录,并保存状态)public c原创 2017-02-22 22:54:25 · 233 阅读 · 0 评论 -
原型模式
原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。浅复制Resume.java 实现Cloneable接口,并且重写clone方法public class Resume implements Cloneable{ private String name; private String sex; private String age原创 2017-02-14 15:02:00 · 208 阅读 · 0 评论 -
模版模式
模版方法模式:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模版方法使得子类可以不改变一个算法的结构,即可重新定义该算法的某些特定步骤。模版方法模式是通过把不变的行为搬移到超类,去除子类中的重复代码来体现它的优势。AbstractClass.javapublic abstract class AbstractClass { //一些抽象行为放到子类中去实现 public ab原创 2017-02-14 19:09:26 · 178 阅读 · 0 评论 -
外观模式
外观模式(Facade):为子系统的一组接口提供一个一致的界面,此模式定义了一个高层接口,这一接口使得这一子系统更加容易使用。外观模式的使用场景:首先,在设计初期阶段,应该要有意思的将不同的两层分离。层与层之间建立外观Facade,增加外观Facade可以提供一个简单的接口,减少它们之间的依赖。 子系统类class SubSystemOne { public void MethodOne(原创 2017-02-14 19:45:21 · 188 阅读 · 0 评论 -
建造者模式
建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。如果用了建造者模式,那么用户就只需要指定的类型就可以得到它们,而具体的建造过程和细节就不需要知道了。 Product类-由多个部件组成public class Product { List<String> parts=new ArrayList<String>(); public原创 2017-02-14 21:15:49 · 172 阅读 · 0 评论 -
组合模式
组合模式:将对象组成树形结构以表示部分与整体的层次结构。组合模式使得用户对单个对象和组合对象的使用具有一致性。实例Component.java/** * @author Carl_Hugo * 声明一个接口用于访问和管理Component子部件 */public abstract class Component { protected String name; public C原创 2017-02-23 10:32:52 · 278 阅读 · 0 评论 -
观察者设计模式
观察者设计模式:又被称作是发布/订阅模式,观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个对象的状态发生变化时,会通知所有的观察者对象,使他们能够自动更新自己。 解决的问题:将系统分割成一些类或者相互协作的类,会有一个不好的副作用。那就是需要维护相关对象的一致性。我们不希望为了维护一致性而使得各种类紧密耦合,这样会给维护扩展重用都带来不便。观察者就是解决这一类原创 2016-07-04 19:13:55 · 522 阅读 · 0 评论