
设计模式
文章平均质量分 79
yjc0403
这个作者很懒,什么都没留下…
展开
-
设计模式分类
设计模式—创建型Singleton,单例模式:保证一个类只有一个实例,并提供一个访问它的全局访问点Abstract Factory,抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们的具体类。Factory Method,工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类,Factory Method使一个类的实例化延迟到了子类。Builder,建造模式:将一个复...原创 2014-11-25 23:58:50 · 104 阅读 · 0 评论 -
迭代器模式和组合模式---转
把迭代器模式和组合模式放在同一篇的原因是其联系比较紧密。一、迭代器模式1.1迭代器模式定义迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而不是暴露其内部的表示。这个模式提供了一种方法,可以顺序访问一个聚合对象中的元素,而不用知道内部怎么表示的。为了更好的理解迭代器模式,我们举个例子。1.2迭代器例子下面使用head first设计模式中的例子,使用迭代器...原创 2016-03-29 11:34:26 · 131 阅读 · 0 评论 -
Java设计模式十三: 策略模式(Strategy)
策略模式定义了一系列的算法,并将每一个算法封装起来,而且使他们还可以相互替换。策略模式让算法独立于是用它的客户而独立变化。应用场景:多个类只区别在表现行为不同,可以使用strategy模式,在运行时动态选择具体要执行的行为。需要在不同情况下使用不同的策略(算法),或者策略还可能在未来用其他方式来实现。对客户隐藏具体策略(算法)的实现细节,彼此完全独立。在网上看到一个鸭子为例的策略模式的文章,说明...原创 2016-03-29 19:36:17 · 114 阅读 · 0 评论 -
代理模式 -- java RMI 实现远程服务 -- 转
Java RMI 指的是远程方法调用 (Remote Method Invocation)。它是一种机制,能够让在某个 Java 虚拟机上的对象调用另一个 Java 虚拟机中的对象上的方法。可以用此方法调用的任何对象必须实现该远程接口。 Java RMI不是什么新技术(在Java1.1的时代都有了),但却是是非常重要的底层技术。大名鼎鼎的EJB都是建立在rmi基础之上的,现在还有一...原创 2016-03-29 20:24:32 · 238 阅读 · 0 评论 -
代理模式 -- 保护代理与Java反射 -- 转
本笔记内容:1. Java动态代理,反射机制2. 保护代理3. 应用保护代理实现的约会系统---------------------------------------------------------------------------- 走进保护模式 我们知道,相亲节目已经在天朝的电视上已经火了多年了,说明了有广大同胞需要这个配对服务,更别说咱们程...原创 2016-04-01 12:11:22 · 345 阅读 · 0 评论 -
观察者模式 -- java内置observer、observable -- 转
如何实现简单的观察者模式接下来我们实现壹個简单的被观察者类 ExampleObservable ,代码如下:?1234567891011import java.util.Observable; public class ExampleObservable extends Observable {...原创 2016-04-01 12:15:58 · 131 阅读 · 0 评论 -
适配器模式--类适配器和对象适配器
类适配器模式采用的是多重继承的方式 class Adapter extends Adaptee implements Target{ request(){this.SpecificRequest();} ....} 对象适配器采用的是包含的方式 class Adapter implements Taget{ ...原创 2016-04-11 16:32:06 · 230 阅读 · 0 评论 -
模版方法模式--java数组排序及Comparable接口用法-- 转
1、概述 Arrays类有一个静态方法sort,利用这个方法我们可以传入我们要排序的数组进去排序,因为我们传入的是一个数组的引用,所以排序完成的结果也通过这个引用的来更改数组。对于整数、字符串排序,jdk提供了默认的实现,如果要对一个对象数组排序,则要自己实现java.util.Comparator接口。 java.util.Arrays中代码Java代码 ...原创 2016-04-12 11:02:54 · 211 阅读 · 0 评论 -
JAVA中Arrays.sort()使用两种方式(Comparable和Comparator接口)对对象或者引用进行排序 -- 转...
一、描述自定义的类要按照一定的方式进行排序,比如一个Person类要按照年龄进行从小到大排序,比如一个Student类要按照成绩进行由高到低排序。这里我们采用两种方式,一种是使用Comparable接口:让待排序对象所在的类实现Comparable接口,并重写Comparable接口中的compareTo()方法,缺点是只能按照一种规则排序。另一种方式是使用Comparator接口:...原创 2016-04-12 11:15:11 · 395 阅读 · 0 评论 -
工厂模式和模板方法模式
当创建一组相互之间有关系的类时,在对象创建期间维护他们之间的这些关系是很重要的。要做到这一点,有一个办法是使用工厂方法Factory Method 设计模式。工厂方法模式是一个创建模式,解决了在没有指定具体类型的情况下创建对象的问题。这经常用在抽象类上,专为创建对象定义一个方法。子类就可以覆盖这个方法来定义要创建的特定对象。工厂方法模式经常与另一个称为模板方法的模式协作,要更好地理解工厂方...原创 2016-04-12 14:55:23 · 1230 阅读 · 0 评论 -
Java设计模式十二:模板方法模式(Template Method)
定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.如果你只想掌握一种设计模式,那么它就是模板方法.类图: 抽象模板AbstractClass的方法分为两类:基本方法: 也叫做基本操作,由子类实现的方法,并且在模板方法被调用.模板方法: 可以有一个或几个, 一般是具体方法, 也就是骨架, 实现对基本方法的调度,...原创 2016-03-28 15:19:22 · 89 阅读 · 0 评论 -
Java设计模式十一:迭代器模式(Iterator)
迭代器模式有叫做游标(Cursor)模式。GOF给出的定义:提供一种方法访问一个容器(container)对象中的各个元素,而又不暴露该对象的内部细节。迭代器模式由以下角色组成:迭代器角色(Iterator): 负责定义访问和遍历元素的接口。具体迭代器角色(Concrete Iterator):实现迭代器接口,并要记录遍历中的当前位置。容器角色(Container): 负责提供创建具体迭代器角...原创 2016-03-28 14:49:47 · 133 阅读 · 0 评论 -
Java设计模式十:观察者模式(Observer)
观察者模式定义了对象间的一种一对多依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并被自动更新。它将观察者和被观察者的对象分离开。提高了应用程序的可维护性和重用性。实现观察者模式有很多形式,一种是“注册---通知---撤销注册”的形式。观察者Observer:所有潜在的观察者必须实现观察者接口,这个接口只有update方法,当主题改变时,它被调用。具体观察者Concrete...原创 2016-03-23 15:54:26 · 122 阅读 · 0 评论 -
Java设计模式一: 单例模式(Singleton)
单例模式确保某一个类只有一个实例,并且自行实例化并向整个系统提供这个实例.如资源管理器, 访问存放配置文件的类,log,httpApplication.通常Singleton模式有几种形式:一: 使用全局变量//Singleton with final field public class Singleton{ public static final Singleton instanc...原创 2016-02-01 14:59:45 · 107 阅读 · 0 评论 -
Java设计模式二: 原型模式(Prototype Pattern)
原型模式是一种创建型设计模式,它通过复制一个已经存在的实例来返回新的实例,而不是新建实例.被复制的实例就是我们所称的原型,这个原型是可定制的.原型模式多用于创建复杂的或者耗时的实例, 因为这种情况下,复制一个已经存在的实例可以使程序运行更高效,或者创建值相等,只是命名不一样的同类数据.原型模式中的拷贝分为"浅拷贝"和"深拷贝":浅拷贝: 对值类型的成员变量进行值的复制,对引用类型的成员变量...原创 2016-02-01 16:02:22 · 93 阅读 · 0 评论 -
Java设计模式三:抽象工厂模式(Abstract Factory)/工厂方法(Factory Method)
工厂模式提供创建对象的接口。工厂模式分为三类:简单工厂模式(Simple Factory), 工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory).GOF在《设计模式〉中将工厂模式分为两类:工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory)。1. 简单工厂模式(Simple Factory)简单工...原创 2016-02-01 18:04:05 · 142 阅读 · 0 评论 -
Java设计模式四:建造者模式(Builder Pattern)
1.概念 将一个复杂的构建与其表示相分离,使得同样的构建过程可以创建不同的表示。 [构建与表示分离,同构建不同表示] 与抽象工厂的区别:在建造者模式里,有个指导者,由指导者来管理建造者,用户是与指导者联系的,指导者联系建造者最后得到产品。即建造模式可以强制实行一种分步骤进行的建造过程。 建造模式是将复杂的内部创建封装在内部,对于外部调用的人来说,只需要传入建造者和建造...原创 2016-02-02 17:06:14 · 90 阅读 · 0 评论 -
Java设计模式五:适配器模式(Adapter)
将一类的接口转换成客户希望的另外一个接口,Adapter模式使得原本由于接口不兼容而不能一起工作那些类可以一起工作。适用情况:使用的前提是:接口中规定了所有要实现的方法; 但一个要实现此接口的具体类,只用到了其中的几个方法,而其它的方法都是没有用的。实现方法:用一个抽象类实现已有的接口,并实现接口中所规定的所有方法,这些方法的实现可以都是空方法;原本要实现接口的子类,只实现上面的抽象类即可,并...原创 2016-02-04 14:39:19 · 100 阅读 · 0 评论 -
Java设计模式六:代理模式(Proxy)
为另一个对象提供一个替身或占位符以控制对这个对象的访问,简而言之就是用一个对象来代表另一个对象。类图:简单例子:有个接口Italk,people对象实现这个接口的talk()方法,有些想另外加入sing()方法,所以增加代理类talkProxy,实现两个方法.public interface ITalk{ public void talk(String msg);}public c...原创 2016-02-04 14:57:48 · 97 阅读 · 0 评论 -
Java设计模式七:组合模式(Composite Pattern)
组合模式又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以向处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解藕.组合模式可以优化处理递归或分级数据结构.有许多关于分级数据结构的例子,使得组合模式非常有用武之地.类图:组成部分:Component: 为参加组合的对象声明一个公共接口, 不管是组合还是叶结点.Leaf: 在组合中...原创 2016-02-04 15:12:10 · 101 阅读 · 0 评论 -
Java设计模式八:桥模式(Bridge Pattern)
桥模式就是把抽象部分和它的实现部分分离开来,让两者可独立变化。这里的抽象部分指的是一个概念层次上的东西,它的实现部分指的是实现这个东西的(功能)部分,分离就把实现部分从它要实现的抽象部分独立出来,自我封装成对象。类图:组成:抽象化(Abstraction)角色:抽象化给出的定义,并保存一个对实现化对象的引用。修正抽象化(Refined Abstraction)角色:扩展抽象化角色,改变和...原创 2016-02-04 16:13:03 · 98 阅读 · 0 评论 -
Java设计模式九:装饰模式(Decorator Pattern)
装饰模式是在不必改变原类文件和使用继承的情况下,动态的扩展一个对象的功能。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。装饰模式的特点:1) 装饰对象和真实对象有相同的接口,这样客户端对象就可以和真实对象相同的方式和装饰对象交互。2)装饰对象包含一个真实对象的引用。3)装饰对象接受所有来自客户端的请求,它把这些请求转发给真实的对象。4)装饰对象可以在转发这些请求以前或以后增加一些附加功能...原创 2016-02-04 18:07:46 · 141 阅读 · 0 评论 -
常用设计模式
常用设计模式 单例模式(关键:new 一个 static 对象) 一个类只有一个示例,最典型就是Sping Ioc。 优点 只有一个对象,节省资源,提高系统性能。避免共享资源被重复占用,如程序计数器、资源文件的访问,对线程安全有一定帮助。允许可变数目的实例,自己new就可以。 缺点 不适用于变化的对象,如果同一类型的对...原创 2017-07-07 17:31:25 · 110 阅读 · 0 评论