设计模式
文章平均质量分 72
王先生的副业
屌丝,爱做梦的屌丝。
展开
-
java中的单例模式
在单例模式中,一个类只能创建一个实例,不管何时调用getInstance(),获得的都是同一个对象的引用,因为在singleton中都被声明为static,所以在程序运行时不会被jvm回收,所以自始至终都是同一个对象的引用,关于Singleton的几种方式, 1:是懒汉模式,在需要这个对象的时候去检查引用是否为空,如果为空则创建一个新的对象,并且这个对象一直被静态引用持有。这样每次调用getIns原创 2017-09-13 10:13:06 · 286 阅读 · 0 评论 -
java设计模式之桥接模式
名称 桥接模式(Bridge) 意图 将抽象部分与它的实现相互分离,使他们都可以独立地变化。 动机 当一个抽象有多个实现地时候,通常由继承来协调他们。抽象类定义对该抽象的接口,而具体的子类则用不同的方式加以实现。但是此方法有时不够灵活,继承机制将抽象部分与它的实现部分固定在一起,使得难以对抽象部分和实现部分独立修改、扩充和重用。 适用性 不希望在抽象和它的实现部分之间有一个固定原创 2018-01-21 19:43:53 · 273 阅读 · 0 评论 -
java设计模式之外观模式
名称 外观模式(Facade) 意图 为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。 动机 将一个系统划分成为若干个子系统,有利于降低系统的复杂性。一个常见的设计目的时使得子系统间的通信和相互依赖关系达到最小。达到这个目标的途径之一就是引入一个外观(Facade)对象,它为子系统中较为一般的设施提供了一个单一而简单原创 2018-01-22 21:36:16 · 207 阅读 · 0 评论 -
Java设计模式之责任链模式和一拳超人
名称 Chain of responsibility 举例 一拳超人 威胁等级 根据其威胁程度分为:神,龙,鬼,虎,狼,有时也被用作表示怪人或怪物的强度。 神:可能导致人类灭亡的危机; 龙:可能导致数个城镇被毁的危机; 鬼:导致一个城镇机能停止或毁灭的危机; 虎:造成大量伤亡的危机; 狼:有危险因素出现。 英雄定位 琦玉老师:没有什么是一拳解决不了的原创 2018-01-30 21:40:21 · 509 阅读 · 0 评论 -
Java设计模式之迭代器模式包括泛型
解析 网上到处都是 示例代码 package abc; interface Iterator {//定义迭代器接口 public boolean hasNext(); public Object next(); } class ConcreteIterator implements Iterator {//定义包括泛型的实际迭代器 private MyLis原创 2018-01-31 17:37:00 · 315 阅读 · 0 评论 -
Java设计模式之中介者模式
意图 用一个中介对象来封装一系列的对象交互,中介者使得各个对象不需要显式地相互引用,从而使得其耦合松散,而且可以独立地改变他们之间地交互。 适用性 一组对象以定义良好但是复杂地方式进行通信,产生的相互依赖关系结果混乱且难以理解。 一个对象引用其他很多对象并且直接与这些对象通信,导致难以复用该对象。 想定制一个分布在多个类中的行为,而不是想生成太多的子类。 参与者 Mediato原创 2018-02-01 18:40:04 · 311 阅读 · 0 评论 -
Java设计模式之备忘录模式
动机 有时需要记录一个对象的内部状态,为了允许用户取消不确定的操作或者从错误中恢复过来,需要实现检查点和取消机制,而要实现这些机制,必须事先将状态信息保存在某处,这样才能将对象恢复到它们先前的状态。 适用性 必须保存一个对象在某一个时刻的(部分)状态,这样以后需要时它才能恢复到先前的状态 如果一个用接口来让其他对象直接得到这些状态,这将暴露对象的实现细节,并且破坏对象的封装性。原创 2018-02-02 20:39:22 · 204 阅读 · 0 评论 -
Java设计模式之状态模式
结构 参与者 Context(环境) 定义客户感兴趣的接口 维护一个ConcreteState子类的实例,这个实例定义当前状态。 State(状态) 定义一个接口,以封装与Context的一个特定状态相关的行为 ConcreteState subclasses(具体状态子类) 每个子类实现一个与Context的一个状态相关的行为 协作 Context将与状态相关的请求委原创 2018-02-03 17:25:28 · 189 阅读 · 0 评论 -
java 设计模式之享元模式
名称 Flyweight享元模式 概念 内部状态:在享元对象内部不随外界环境改变而改变的共享部分。 外部状态:随着环境的改变而改变,不能够共享的状态就是外部状态。 意图 运用共享技术有效地支持大量的细粒度对象 动机 一个应用程序使用了大量的对象 完全由于使用大量的对象,造成很大的存储开销 对象的大部分状态都可以变为外部状态 如果删除对象的外部状态,那么可以使用相对较少的原创 2018-01-27 20:33:03 · 312 阅读 · 0 评论 -
Java设计模式之模板方法模式
意图 定义一个操作中的算法骨架,而将一些操作延迟到子类中。TemplateMethod使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 示例代码 abstract class SuperHero{ public void FrightCrime(){ this.Name(); this.MainWeapon(); th原创 2018-02-03 21:14:27 · 222 阅读 · 0 评论 -
Java设计模式之访问者模式
意图 表示一个作用于某个对象结构中的各元素的操作,它使你可以在不改变各元素的类的前提下定义作用于这些元素的新操作。 示例代码 interface Pets { public void accept(Human human); } class Cat implements Pets { @Override public void accept(Human原创 2018-02-04 13:59:27 · 207 阅读 · 0 评论 -
Java设计模式之解释器模式
概念 这个模式不是特别常用,好像几乎见不到,先看看代码,以后有时间再补充。 示例代码 interface Expression { public String interpret(String context); } class TerminalExpression implements Expression { private String data; pu原创 2018-02-04 21:26:44 · 406 阅读 · 0 评论 -
设计模式(Java)
创建型模式 中文名称 English Name 抽象工厂 Abstract Factory 生成器 Builder 工厂方法 Factory Method 原型 Prototype 单例 Singleton 结构型模式 中文名称 English Name 适配器 Adapter原创 2017-09-17 14:33:14 · 539 阅读 · 0 评论 -
单例模式(汇总)
一般的单例模式http://blog.csdn.net/uncle_gy/article/details/77962501使用静态块,静态内部类,枚举类实现单例模式http://blog.csdn.net/uncle_gy/article/details/78472721使用序列化和反序列化实现单例模式http://blog.csdn.net/uncle_gy/article/details/784原创 2017-12-23 23:03:58 · 342 阅读 · 0 评论 -
java原型模式
意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型的对象。参与者:Prototype ——声明一个克隆自身的接口(或者是抽象类) ConcretePrototype ——实现接口或者是抽象类中的方法,实现一个克隆自身的操作 Client ——让原型克隆自身从而创建一个新的对象。协作:客户请求一个原型克隆自身类图:具体代码:package hello;abstract class Pr原创 2017-09-20 15:04:33 · 277 阅读 · 0 评论 -
继java装饰者模式——java IO
有了装饰者模式,就可以继续了解java的IO类, InputStream 抽象组件 FileInputStream,StringBufferInputStream,ByteArrayInputStream等是具体组件 FilterInputStream是一个抽象的装饰者 PushbackInputStream,BufferInputStream,DataInputStream,LineNum原创 2017-09-12 22:07:50 · 364 阅读 · 0 评论 -
java 装饰者模式
在First Head 设计模式一书中, 有这样一个例子。 在装饰者模式中,有组件类,装饰器,由此可以逐渐添加类的功能,就好像俄罗斯套娃。package tablejava; /* * 以下是组件类 * * */ //抽象组件 abstract class Beverage{ protected String description="Unknow Beverage";原创 2017-09-12 19:10:54 · 326 阅读 · 0 评论 -
java设计模式之工厂模式
概念工厂模式的种类:1.简单工厂模式(Simple Factory) 2.工厂方法模式(Factory Method) 3.抽象工厂模式(Abstract Factory) 按照产品系划分可以分为: 单个产品系:简单工厂模式,工厂方法模式 多个产品系:抽象工厂模式简单工厂模式:简单工厂模式只对产品类进行抽象 包括: 一个抽象产品类(或者接口) 多个具体产品类 一个具原创 2017-09-15 11:29:12 · 386 阅读 · 0 评论 -
java设计模式之观察者模式
观察者模式定义了一系列的对象之间的一对多的关系。 当一个对象改变状态的时候,其他依赖者都会受到通知。观察者模式可以比作是报纸出版商(WeatherData )和订阅者(interface Observer,CurrentConditionsDisplay ,StatisticsDisplay,ForecastDisplay )之间的关系。 如果订阅者需要收到新的报纸(temperature,h原创 2017-09-15 22:42:49 · 414 阅读 · 0 评论 -
java 策略模式
策略模式——Strategy (政策模式——Policy)的意图:定义一系列的算法,把它们一个个封装起来,并且使他们可以相互替换。动机:有许多算法可以对一个正文流进行分析,将这些算法硬编码进它们的类中是不可取的,其原因如下:1.需要换行功能的客户程序如果直接包含换行算法的话就会变得复杂,这使得客户程序庞大而且难以维护,尤其是需要支持多种换行算法的时间问题会更加严重。 2.不同的时候需要不同的算法,我原创 2017-09-17 14:07:11 · 368 阅读 · 0 评论 -
java 命令模式
别名: Action,Transaction 参与者:Command——声明执行操作的接口ConcreteCommand——将一个接收者对象绑定于一个动作。 ——调用接收者相应的操作,以实现executeClient——创建一个具体命令对象并设定它的接收者Invoker——要求该命令执行这个请求Receiver——知道如何实施与一个请求相关的操作。任何类都可能作为一个接收者协作——Client原创 2017-09-18 11:55:17 · 492 阅读 · 0 评论 -
UML类图常用符号
这是一张网上经典的UML图解, 它包含的关系有: 1:泛化关系 泛化关系表示一种继承关系,由一般到特殊,在UML中用一个实线和一个三角箭头表示,由子类指向父类。 2:实现关系 实现关系是一种类和接口的关系,由类指向接口,在UML中是一个虚线和一个三角箭头,有类指向接口。 3:关联 关联关系是一种拥有的关系,老师可以有很多的学生,学生也可以有很多老师,双向关联一般使用没有箭头原创 2017-09-19 10:42:59 · 1021 阅读 · 0 评论 -
java适配器模式
Adapter(适配器)意图:将一个类的接口转换成客户希望的另外一个接口,Adapter接口模式使得原本由于接口不兼容而不能在一起工作的那些类可以在一起工作。使用情况:你想使用一个已经存在的类,而它的接口不符合你的需求 你想创建一个可以复用的类,该类可以与其他不相关的类或者不可以预见的类(即那些接口可能不一定兼容的类)协同工作。 (仅适用于对象Adapter)你想使用一些已经存在的子类,但是不可原创 2017-09-21 11:07:52 · 369 阅读 · 0 评论 -
Java多线程(PART XXI)多线程和单例模式
一般的单例模式。http://blog.csdn.net/uncle_gy/article/details/77962501单例模式和线程安全单例模式分为懒汉模式和饿汉模式。 其中饿汉模式是天生的线程安全的。 因为懒汉模式是延时加载的所以在多线程的环境下存在一些不确定的因素。懒汉模式线程不安全示例代码class MyObject{ private static MyObject myOb原创 2017-11-07 17:49:20 · 336 阅读 · 0 评论 -
设计模式之使用静态块,静态内部类,枚举类实现单例模式
传统的实现单例模式的方式: http://blog.csdn.net/uncle_gy/article/details/77962501 单例模式和多线程: http://blog.csdn.net/uncle_gy/article/details/78470486主体代码class MyObject{ //这是具体的实现方法 } class MyThread extends Thre原创 2017-11-07 21:23:42 · 1105 阅读 · 0 评论 -
设计模式之使用序列化和反序列化实现单例模式
什么是序列化和反序列化序列化 :把Java对象转换为字节码 反序列化:把字节码还原为Java对象示例代码import java.io.*; class Users implements Serializable{ private String username; private String password; public Users(String username,St原创 2017-11-08 11:02:22 · 730 阅读 · 0 评论 -
java建造者模式
意图:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。适用性:以下情况可以使用Builder模式 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。 当构造过程必须允许被构造的对象有不同表示时。 需要生成的产品对象的属性相互依赖。一个属性的赋值必须发生在另一个属性之后。 结构:参与者: Builder ——为创建一个Product对象的各个部分指定抽原创 2017-09-22 11:17:09 · 341 阅读 · 0 评论 -
Java设计模式之代理模式
名称 Proxy 模式,或者Surrogate 意图 为其他对象提供一种代理以控制对这个对象的访问。 参与者 RealSubject 保存一个引用使得代理可以访问实体,若RealSubject和Subject的接口相同,Proxy会引用Subject 提供一个与Subject的接口相同的接口,这样代理就可以用来代替实体 控制对实体的存取,并可能负责创建和删除它 其他功能依原创 2018-01-29 21:00:02 · 239 阅读 · 0 评论