
设计模式
lapland_
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
动态代理
动态代理,简单说就是不用在设计实现的时候就指定某一个代理类来代理哪一个被代理的对象,可以把这种指定延迟到程序运行时有JVM来实现。它的结构图如下:其中: InvocationHandler:即为java.reflect.InvocationHandler接口; AbstractSubject:抽象主题类; RealSubject:真实主题类,即被代理的类; DynamicProxy:动态代理原创 2017-04-06 15:33:36 · 302 阅读 · 0 评论 -
代理模式
代理模式:为其他对象提供一种代理以控制对这个对象的访问。结构图如下: 其中: Subject:定义了RealSubject和Proxy的公用接口,这样就可以在任何使用RealSubject的地方都可以使用Proxy; RealSubject:定义了Proxy所代表的的真实实体; Proxy:保存了一个引用使得代理可以访问实体,并提供一个与Subject接口相同的接口(方法),这样代理就可以替原创 2017-04-06 12:26:45 · 359 阅读 · 0 评论 -
责任链模式
责任链模式:使多个对象都有机会处理请求,从而避免请求发送者和接收者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。它的结构图如下: 其中: Handler:定义一个处理请求的接口,如果需要,接口可以定义出一个方法以设定和返回对下家的引用,这个角色通常是一个java抽象类或者java接口实现。 ConcreteHandler:具体处理者角色,处理它所负责的原创 2017-04-06 11:59:29 · 308 阅读 · 0 评论 -
装饰模式
装饰模式:即动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。(通常可以通过集成来实现功能的拓展,若需要增加的功能种类繁多,那么势必需要生成很多的子类,增加系统的复杂性,同时,使用继承实现功能的拓展,我们必须可预见这些拓展的功能,这些功能是编译时就确定的了,是静态的。) 下面为装饰模式的结构图: 其中: Component:定义了一个对象接口,可以给这些对象动态地原创 2017-04-04 10:35:09 · 257 阅读 · 0 评论 -
适配器模式
适配器模式:是将一个类的接口转换成客户希望的另一个接口。使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。它的结构图如下: 其中: Target:这是客户所期待的接口,目标可以是具体的或抽象的类,也可以是接口; Adapter:通过在内部包装一个Adapter对象,把源接口转换成目标接口; Adaptee:需要适配的类; 用代码描述如下:class Target{ publ原创 2017-04-03 23:05:07 · 287 阅读 · 0 评论 -
工厂模式
工厂模式可以细分为三种模式,分别为:简单工厂模式,工厂方法,抽象工厂。下面是对这三种模式自己的学习见解,希望大家共同来交流呀。 1,简单工厂模式:工厂类是根据提供给它的参数,返回的是几个可能产品中的一个类的实例;下图为它的结构图: 以设计一个计算器为例://运算类 class Operation { public double numberA=0; public double原创 2017-04-03 22:39:17 · 232 阅读 · 0 评论 -
单类模式
单类模式,确保某一个类只能有一个实例,而且自行实例化并向整个系统提供这个实例,通用代码为:public class Singleton { private static final Singleton singleton=new Singleton(); private Singleton(){ } public static Singleton getSingleto原创 2017-03-28 09:21:52 · 367 阅读 · 0 评论 -
单类模式
单类模式,确保某一个类只能有一个实例,而且自行实例化并向整个系统提供这个实例,通用代码为:public class Singleton { private static final Singleton singleton=new Singleton(); private Singleton(){ } public static Singleton getSingleto原创 2017-04-03 19:34:44 · 710 阅读 · 0 评论 -
建造者模式
建造者模式:又叫做生成器模式,可以将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。用户只需要指定需要建造的类型就可以,而具体建造的过程和细节则不需要知道。它的结构图如下: 其中: Product:为具体的产品; Builder:是一个为创建一个Product对象的各个部件而指定的抽象的接口; ConcreteBuilder:是具体的建造者,实现了Builder接口,原创 2017-04-06 16:21:33 · 318 阅读 · 0 评论