![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java设计模式
文章平均质量分 69
孙悟空2015
追根溯底,回归本质,挖掘兴趣,激发思考。
展开
-
Java设计模式——单例模式(Singleton)
单例模式的意图是为了确保一个类在整个JVM中有且仅有一个实例,并为他提供一个全局的访问点。 单例模式机制 怎么样才能阻止其他开发人员创建类的新实例? 可以创建唯一一个构造函数,并设置为私有。 单例和线程 多线程延迟初始化一个单例模式尽量避免多个线程同时初始化该单例对象。 假设一个线程发现该单例对象为null,接着第二个线程运行也发现该单例对象为null,然后两个线程都会对该单例对象进行初原创 2015-03-17 20:01:34 · 1002 阅读 · 0 评论 -
Java设计模式——装饰器模式(Decorator)
孙悟空有七十二般变化,他的每一种变化都给他带来一种附加本领。而不管孙悟空怎么变化在二郎神眼里,他永远是那只猢狲。 装饰器模式以对客户透明的方式动态的给一个对象附加上更多的责任。 在孙悟空的例子里,老孙变成的鱼儿相当于老孙的子类。 装饰模式的类图如下: 装饰模式的角色介绍: 抽象构件角色(ComponentDec):给出一个抽象接口,以规范准备接收附加责任的对象 具体构件(Concre原创 2015-05-18 21:29:05 · 3821 阅读 · 2 评论 -
Java设计模式——备忘录模式(Memento)
又名快照模式或者token模式 备忘录对象是一个用来存储另一个对象内部状态的快照(snapshot)的对象。备忘录模式用意是在不破坏封装的条件下,将下一个对象的状态捕捉(capture),并外部化(externalize),存储起来,从而可以在将来合适的时候把这个对象还原到存储起来的状态。备忘录模式常常与命令模式和迭代子模式一起使用。 备忘录模式涉及的角色:备忘录角色、发起人角色、负责人角色原创 2015-05-17 18:58:42 · 1016 阅读 · 0 评论 -
Java设计模式——适配器模式(Adapter)
适配器模式的意图在于:使用不同的接口的类所提供的服务为客户端提供他所期望的接口。 接口适配(类的适配) 类图如下: Client类需要实现Interface_1中的requestMethod方法,但是也需要使用Client2中的usefulMethod方法,这时候要对Client2进行适配,满足客户端Client对象的需要,编写一个继承Clent2并且实现Interface_1的类,通过重原创 2015-03-14 10:43:19 · 1933 阅读 · 1 评论 -
Java设计模式——外观模式(门面模式)(Facade)
外观模式意图为子系统提供一个接口,方便使用 外观类、工具类和示例类 外观类可能全是静态方法 示例类展示如何使用类和子系统 示例类和外观类的区别: 1、示例类通常是单独运行的应用程序,而外观类不是 2、示例类包含了样例数据,外观类没有 3、外观类通常是可配的,示例类不是 4、外观类的意图是为了重用,示例类不是 5、外观类用在产品代码中,示例类不是 Java中外观类比较少,原因是原创 2015-03-14 20:44:03 · 1321 阅读 · 0 评论 -
Java 设计模式——原型模式(Prototype)
原型模式属于对象的创建模式。通过给出一个原型对象来指明所有创建对象的类型,然后用复制这个原型对象的办法创建出更多同类型的对象。 原型模式有简单形式和登机形式两种表现 形式。 简单形式的原始模型模式 简单形式UML类图如下: 原型模式的角色有 客户端角色(ClientPro): 抽象原型角色(ProtoType): 具体原型角色(ConcreteProtoType):被复制的对象原创 2015-04-06 18:46:34 · 1105 阅读 · 0 评论 -
Java设计模式——抽象工厂模式(Abstract factory)
抽象工厂模式可以向客户提供接口,使得客户端在不必指定产品具体类型的情况下创建多个产品族中的产品对象。 系统的设计 采用抽象工厂模式设计出的系统类图如下: 从上图可以看出,抽象工厂模式涉及到角色: 抽象工厂角色(AbstractFactory):担任这个角色的是工厂方法模式的核心,它与应用系统的商业逻辑无关。通常使用Java接口或者抽象Java类实现,而所有的具体工厂类都必须实现这个Jav原创 2015-04-03 18:22:19 · 1204 阅读 · 0 评论 -
Java设计模式——工厂方法模式(factory method)
工厂方法模式是类的创建模式,用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。 相信很多人都做过导入导出功能,就拿导出功能来说。有这么一个需求:某一个系统需要支持对数据库中的员工薪资进行导出,并且支持多种格式如:HTML、Excel、PDF等,每种格式导出的结构有所不同,比如:财务跟其他人对导出薪资的HTML格式要求可能会不一样,因为财务可能需要特定的格式方便核算或其他用途。如果使原创 2015-03-31 21:21:15 · 1399 阅读 · 0 评论 -
Java设计模式——享元模式(Flyweight)
Flyweight在拳击比赛中指最轻量级,即“蝇量级”或“雨量级”,这里选择使用“享元模式”的意译,是因为这样更能反映模式的用意。享元模式是对象的结构模式。享元模式以共享的方式高效地支持大量的细粒度对象。 在JAVA语言中,String类型就是使用了享元模式。String对象是final类型,对象一旦创建就不可改变。在JAVA中字符串常量都是存在常量池中的,JAVA会确保一个字符串常量在常量池中只原创 2015-03-23 22:12:28 · 968 阅读 · 0 评论 -
适配器模式
适配器模式的意图在于:使用不同的接口的类所提供的服务为客户端提供他所期望的接口。接口适配(类的适配)Client类需要实现Interface_1中的requestMethod方法,但是也需要使用Client2中的usefulMethod方法,这时候要对Client2进行适配,满足客户端Client对象的需要,编写一个继承Clent2并且实现Interface_1的类,通过重写reque原创 2015-03-12 22:03:08 · 181 阅读 · 0 评论 -
Java设计模式——代理模式(Proxy)
代理模式是对象的结构模式。代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。 类图如下: 静态代码源码public abstract class Subjects { public abstract void operate();}public class RealSubjects extends Subjects { public void operat原创 2015-03-22 12:37:20 · 5952 阅读 · 1 评论 -
Java设计模式——构造者模式(Builder)
建造模式是对象的创建模式。建造模式可以将一个产品的内部对象与产品的生产过程分割开啦,从而可以使一个建造过程生成具有不同的内部表象的产品对象。 对象性质的构造: 有些情况下,一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用。比如,一个电子邮件有发件人地址、收件人地址、主题、内容、附录等部分,而在最起码的收件人地址得到赋值之前,这个电子邮件不能发送。 有些情况下,原创 2015-03-29 18:15:33 · 3287 阅读 · 0 评论 -
Java设计模式——调停者模式(Mediator)
调停者模式的意图是定义个对象,封装一组对象的交互,从而降低对象间的耦合度,避免了对象间显示的引用,并且可以独立的改变对象的行为。 过度耦合系统引入调停者 如果电脑没有主板 下面来看看调停者模式的UML类图: 代码实例 抽象同事类public abstract class Colleague { private Mediator mediator; public Co原创 2015-03-20 21:06:03 · 961 阅读 · 0 评论 -
Java设计模式——桥接模式(Bridge)
桥接模式的意图是将抽象和抽象方法的实现相互分离来实现解耦,以便二者相互独立的变化。 若要通过共同的接口控制多种机器,可以使用适配器模式,为每个控制器创建一个适配器类,每个适配器类都可以讲标准的接口调用转换为对现有控制器的调用。 常规抽象:桥接模式的一种方法 数据库驱动 如果用Jdbc连接,只需要用不同的Class.forName参数即可,剩下的都一样。是用oracle还是mysql,原创 2015-03-16 18:33:24 · 1111 阅读 · 0 评论 -
Java设计模式——观察者模式(Observer)
观察者模式的意图是在多个对象之间定义一对多的关系,当一个对象的状态发生改变时,会通知依赖于它的对象,并根据新状态做出反应。 解决的问题: 将一个系统分割成一个一些类相互协作的类有一个不好的副作用,那就是需要维护相关对象间的一致性。我们不希望为了维持一致性而使各类紧密耦合,这样会给维护、扩展和重用都带来不便。观察者就是解决这类的耦合关系的。 源码如下: 抽象主图或通知者public abs原创 2015-03-18 19:42:09 · 825 阅读 · 0 评论 -
Java设计模式——合成模式(Composite)
合成模式的意图是保证客户端调用单对象与组合对象的一致性 Component是抽象类,可以当做接口。 为何Composit类维持包含了Component对象的集合,而不是仅包含叶子对象 设计合成类用于维护合成对象的集合,使得合成对象既可以支持叶子对象又能支持组合对象。换言之,合成模式的设计使得我们能够将一种分组建模为另一种分组的集合。 例如: 我们可以将用户系统权限定义为特定权限的集合或原创 2015-03-15 11:24:49 · 1233 阅读 · 0 评论 -
Java设计模式——职责链模式(Chain of Responsibility)
责任责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。 责任链模式结构: 源码如下:public abstract class Handler { /**原创 2015-03-25 19:59:18 · 1368 阅读 · 0 评论 -
Java设计模式——状态模式(State)
1979年在湖北出土的曾侯乙编钟,每一只钟都能发出不同的音。 用面向对象的语言来讲,编钟有能够动态变化的属性,也就是它所能发出的声音。编钟的这种属性叫做状态,而编钟被叫做有状态的对象。编钟所能发出的声音是由敲击的那一只钟决定,而钟的数目个每一只钟的状态是事先确定的。 很多情况下,一个对象的行为取决于一个或多个动态变化的属性,这样的属性叫做状态,这样的对象叫做有状态的对象。 状态模式的类图如下:原创 2015-05-19 22:15:13 · 1202 阅读 · 0 评论