![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
jackson_fighting
java 任重道远
展开
-
JAVA系列-设计模式-抽象工厂模式
抽象工厂模式的理解:用抽象工厂来定义具体工厂的抽象,而由具体工厂来创建对象 我们以创建一个动物打比喻: 用抽象动物工厂(IAnimalFactory)来定义具体动物工厂的抽象(ICat、IDog),而由具体的动物工厂(BlackCat、BlackDog、WhiteCat、WhiteDog)来创建动物,这就是抽象工厂与工厂方法的不同,工厂方法中对象的创建是由工厂方法来确定的,创建的对象都是不分类原创 2013-11-09 10:16:41 · 1511 阅读 · 0 评论 -
JAVA系列-设计模式-备忘录模式
定义: 在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。 这样以后就可将该对象恢复到原先保存的状态。 类图: 图片来自http://blog.csdn.net/zhengzhb/article/details/7697549 package Memento; /** * 备忘录存储原发起对象的内部状态。 * @author Admin原创 2013-11-09 12:07:38 · 889 阅读 · 0 评论 -
JAVA系列-设计模式-观察者模式
定义: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 package Observer; import java.util.ArrayList; import java.util.List; public abstract class Citizen { List pols; Strin原创 2013-11-10 14:21:48 · 1015 阅读 · 0 评论 -
JAVA系列-设计模式-原型模式
定义: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 package Prototype; /** * 声明一个克隆自身的接口。 * @author Administrator * */ public class Prototype implements Cloneable { private String name; pub原创 2013-11-10 14:26:41 · 1040 阅读 · 1 评论 -
JAVA系列-设计模式-单例模式
定义: 保证一个类仅有一个实例,提供一个访问它的全局访问点。 单例模式有一下特点: 1、单例类只能有一个实例。 2、单例类必须自己自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 package Singleton; /** * 单列模式的七种写法 * * @author Administrator * */ // 1(懒汉,线程不原创 2013-11-10 14:33:39 · 866 阅读 · 0 评论 -
JAVA系列-设计模式-状态模式
定义: 允许一个对象在其内部状改变时改变它的行为。看起来就像是改变了它的类一样。 主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同的一系列类当中,可以把复杂的逻辑判断简单化。 package State; /** * 定义客户感兴趣的接口。 维护一个ConcreteState子类的实例,这个实例定义当前状态。 * @a原创 2013-11-10 14:40:28 · 838 阅读 · 0 评论 -
JAVA系列-设计模式-策略模式
定义: 定义一系列的算法,把它们一个个封装起来,并且使它们可相互替换。本模式使得算法可独立于使用它的客户而变化。 package Strategy; /** * 定义所有支持的算法的公共接口。Context使用这个接口来调用某ConcreteStrategy定义的算法。 * @author Administrator * */ public abstract class St原创 2013-11-10 14:43:43 · 872 阅读 · 0 评论 -
JAVA系列-设计模式-模板模式
定义: 定义一个操作中的算法的骨架,并将一些步骤延迟到子类中。 TemplateMethod使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 下面这段文字摘抄自:http://www.cnblogs.com/java-my-life/archive/2012/05/14/2495235.html 准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然原创 2013-11-10 14:47:35 · 704 阅读 · 0 评论 -
JAVA系列-设计模式-访问者模式
定义: 表示一个作用于某对象结构中的各元素的操作。 它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 package Visitor; import java.util.Collection; /** * 为该对象结构中ConcreteElement的每一个类声明一个Visit操作。 该操作的名字和特征标识了发送visit请求给该访问者的那个类。原创 2013-11-10 14:53:39 · 810 阅读 · 0 评论 -
JAVA系列-设计模式-设计模式的分类、源码下载
设计模式的分类 1.1 创建型模式 AbstractFactory ( 抽象工厂 ) FactoryMethod ( 工厂方法 ) Singleton ( 单态模式 ) Builder ( 建造者模式 ) Prototype 原型模式 ) 1.2 结构型模式 Adapter 适配器模式 Bridge ( 桥接模式) Composite ( 组合原创 2013-11-10 15:00:46 · 864 阅读 · 0 评论 -
JAVA系列-设计模式-中介者模式
定义: 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间的交互。 类图: 举例:在一个公司里面,有很多部门、员工(我们统称他们互相为Colleague“同事”),为了完成一定的任务,“同事”之间肯定有许多需要互相配合、交流的过程。如果由各个“同事”频繁地到处去与自己有关的“同事”沟通,这样肯定会原创 2013-11-09 12:02:25 · 1527 阅读 · 0 评论 -
JAVA系列-设计模式-工厂模式
定义: 定义一个用于创建对象的接口,让子类决定实例化哪一个类。 这个我们平时接触的比较多了,直接看代码吧。 注意要区分和抽象工厂的区别。 抽象工厂设计模式 http://blog.csdn.net/sdn_superuser/article/details/14643589 package Factory; /** 定义工厂方法所创建的对象的接口。 * @author原创 2013-11-09 11:35:35 · 962 阅读 · 1 评论 -
JAVA系列-设计模式-解释器模式
定义:给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。 解释器模式需要解决的是,如果一种特定类型的问题发生的频率足够高,那么可能就值得将该问题的各个实例表述为一个简单语言中的句子。这样就可以构建一个解释器,该解释器通过解释这些句子来解决该问题。 package Expression; /** * 声明一个抽象的解释操作,这原创 2013-11-09 11:22:16 · 862 阅读 · 0 评论 -
JAVA系列-设计模式-适配器模式
适配器举例 相信很多人都知道什么是显卡,也有很多人知道显卡的本名——图形适配器。恩,是的,正好这回说说Apater模式,就拿显卡来例子来分析一下Adapter模式。 我们知道显示器(Client)是用来显示图形的,它是不能显示数据,它只能够接受来自图形发送设备Target的信号。可是我们手头上只有CPU(Adaptee)这个产生各种描述图形的数据的数据发送器。我们需要将这些数据让显示器进行显示原创 2013-11-09 10:24:53 · 911 阅读 · 2 评论 -
JAVA系列-设计模式-桥接模式
主要特点是把抽象(abstraction)与行为实现(implementation)分离开来,从而可以保持各部分的独立性以及应对它们的功能扩展。 该模式的目标是通过把高层的抽象和底层的实现分开,分别构建自己的类层次结构,并通过实现部分的接口将两部分进行桥接,从而达到高层抽象和底层实现可以独立的方便扩展的目的。其核心是分离,和委托。 package Bridge; public abstr原创 2013-11-09 10:38:14 · 809 阅读 · 0 评论 -
JAVA系列-设计模式-建造者模式
将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。 package Builder; public class Man extends Person { } package Builder; /** * 表示被构造的复杂对象。 * ConcreteBuilder创建该产品的内部表示并定义它的装配过程。 包含定义组成部件的类,包原创 2013-11-09 10:46:35 · 756 阅读 · 0 评论 -
JAVA系列-设计模式-责任链模式
责任链模式定义: 在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 下面代码中 人事、项目组长、项目经理形成一条责任链。请求在这个链上传递,直到链上的某一个对象决定处理此请求 pa原创 2013-11-09 10:55:12 · 1561 阅读 · 0 评论 -
JAVA系列-设计模式-命令模式
定义: 将来自客户端的请求传入一个对象,无需了解这个请求激活的 动作或有关接受这个请求的处理细节。 这是一种两台机器之间通讯联系性质的模式,类似传统过程语 言的 CallBack功能。 优点: 解耦了发送者和接受者之间联系。 发送者调用一个操作,接受者接受请求执行相应的动作,因为使用Command模式解耦,发送者无需知道接受者任何接口。 代码: package原创 2013-11-09 11:06:43 · 837 阅读 · 0 评论 -
JAVA系列-设计模式-组合模式
定义: 将对象组合成树形结构以表示"部分-整体"的层次结构。"Composite使得用户对单个对象和组合对象的使用具有一致性。" package Component; import java.util.List; public abstract class Employer { public List employers; private String name; pu原创 2013-11-09 11:14:44 · 1142 阅读 · 2 评论 -
JAVA系列-设计模式-装饰者模式
这个比较好理解。 定义: 动态地给一个对象添加一些额外的职责。就增加功能来说,Decorator模式相比生成子类更为灵活。 package Decorator; /** * 定义一个对象接口,可以给这些对象动态地添加职责。 * @author Administrator * */ public interface Work{ public void insert();原创 2013-11-09 11:18:19 · 810 阅读 · 0 评论 -
JAVA系列-设计模式-享元模式
定义: 运用共享技术有效地支持大量细粒度对象 在一个系统中如果有多个相同的对象,那么只共享一份就可以了,不必每个都去实例化一个对象。在Flyweight模式中,由于要产生各种各样的对象,所以在Flyweight(享元)模式中常出现Factory模式。Flyweight的内部状态是用来共享的,Flyweight factory负责维护一个对象存储池(Flyweight Pool)来存放内原创 2013-11-09 11:45:45 · 940 阅读 · 0 评论 -
JAVA系列-设计模式-迭代器模式
定义: 提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节。 我们的List遍历就是用迭代器模式实现的。 类图 package Iterator; /** * 迭代器定义访问和遍历元素的接口。 * @author Administrator * */ public interface Iterator { Object next();原创 2013-11-09 11:51:13 · 954 阅读 · 0 评论 -
JAVA系列-设计模式-代理模式
定义: 为其他对象提供一种代理以控制对这个对象的访问。 package Proxy; public interface Object { void action(); } package Proxy; public class ObjectImpl implements Object { @Override public void action()原创 2013-11-10 14:29:21 · 1072 阅读 · 1 评论