![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
_zlfan
这个作者很懒,什么都没留下…
展开
-
简单工厂模式
描述:属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式。使用在业务较简单的情况下。关键点工厂类角色:这是模式的核心,含有一定的商业逻辑和判断逻辑,在java中往往由一个具体类实现。 抽象产品角色:一般是具体产品继承的父类或者实现的接口,在java中由接口或者抽象类来实现。 具体产品角色:工厂类所创建的对象就是此角色的实例,在java中有一个具体类实现...原创 2019-05-09 13:56:09 · 170 阅读 · 0 评论 -
享元模式Flyweight
面向对象很好地解决了“抽象”的问题,但是必不可免地要付出一定的代价。对于通常情况来讲,面向对象的成本大都可以忽略不计。但是某些情况。面向对象所带来的成本必须谨慎处理。典型的模式:单例模式,享元模式。假设我们要设计一个字体系统,即一个字有多种不同的字体。现在写了几十万个字,如果要为每一个字都创建字体对象,那么这种开销是很大的。实际上一般的文章最多也就五六种字体,如果对所有的字都共享一个或多个...原创 2019-05-17 14:58:06 · 111 阅读 · 0 评论 -
外观模式
在组件构建过程中,某些接口之间直接的依赖常常会带来很多的问题、甚至根本无法实现。采用添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是种常见的解决方案。典型的模式有:Facade,Proxy,Adapter,Mediator考虑以下情况:上述A方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合,随着外部客户程序和各子系统的演化,这种过多的耦合面临很多变化的挑战。...原创 2019-05-17 12:21:50 · 69 阅读 · 0 评论 -
组合模式
意图将对象组合成树型结构以表示“部分-整体”的层次结构。Composite使得或用户对单个对象和组合对象的使用具有一致性。结构图:组合模式实现的最关键的地方是——简单对象和复合对象必须实现相同的接口。这就是组合模式能够将组合对象和简单对象进行一致处理的原因。Component(组合部件):抽象角色,为要组合的对象提供统一的接口; Leaf(叶子):在组合中表示叶结点对象,...原创 2019-05-16 21:11:33 · 107 阅读 · 0 评论 -
桥接模式
意图将抽象部分与其实现部分分离,使它们可以独立地变化。桥接模式结构图:整个图看起来像一座桥,其中,Abstraction定义抽象类接口,维护一个指向Implementor类型对象的指针。 RefinedAbstraction扩充由Abstraction定义的接口。 Implementor定义实现类的接口,该接口不一定要与Abstraction的接口完全一致;事实上这两个接...原创 2019-05-16 17:59:11 · 99 阅读 · 0 评论 -
代理模式(静态)
定义是指客户端并不能直接调用实际的对象,而是通过调用代理,来间接的调用实际的对象。提供了对目标对象的间接访问方式,即通过代理访问目标对象。如此便于在目标实现的基础上增加额外的功能操作,前拦截,后拦截等,以满足自身的业务需求,同时代理模式便于扩展目标对象功能的特点也为多人所用。静态代理的实现比较简单。package com.zlfan.proxy;public interfa...原创 2019-05-16 15:25:04 · 98 阅读 · 0 评论 -
装饰器模式
定义在不改变原有对象的基础上,将功能附加到对象上(提供了比继承更有弹性的替代方案,属于结构型模式)先来看结构图:装饰器四个角色:Component(被装饰对象基类):定义对象的接口,可以给这些对象动态增加职责。 ConcreteComponent(具体被装饰对象):定义具体的对象,Decorator可以给它增加额外的职责。 Decorator(装饰器抽象类):维护指向C...原创 2019-05-15 17:25:49 · 87 阅读 · 0 评论 -
生成器(建造者)模式
意图:将一个复杂对象的构造与它的表示分离,使得同样的构建过程可以创建不同的表示。情景:生产不同规格的电脑。规格一,规格二关键点:Product(具体产品):表示被构造的复杂对象。 Builder(抽象构建产品):为创建一个产品对象的各种部件指定抽象接口。 BuilderImpl(抽象构建的具体实现):实现Builder接口以构造和装配该产品的各个部件,定义并明确它所创建的表示。...原创 2019-05-10 15:37:47 · 186 阅读 · 0 评论 -
单例模式
意图:保证一个类仅有一个实例,并提供一个访问它的全局访问点。特点:单例类只能有一个实例 构造方法限定为private避免了类在外部被实例化 单例类必须自己创建自己的唯一实例 单例类必须给所有其他对象提供这一实例单例模式有两种:饿汉式单例(立即加载方式),懒汉式单例(延迟加载方式)。package com.zlfan.singleton;/* * 饿汉式单例 */pub...原创 2019-05-10 13:45:14 · 102 阅读 · 0 评论 -
适配器模式
定义将一个类的接口转换成客户希望的另外一个接口,适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。有类适配器,对象适配器,接口适配器。1.类适配器原理:通过继承新类和实现原本的接口来实现。extends 新类 implements 原本的接口结构图:由图可知适配器模式包含一下三个角色:Target(目标抽象类):目标抽象类定义客户所需的接口,可以是一...原创 2019-05-15 14:42:04 · 99 阅读 · 0 评论 -
设计模式知识铺垫
设计模式的要素“每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的解决方案的核心。这样,你就能一次又一次地使用该方案而不必做重复劳动”。设计模式的核心在于提供了相关问题的解决方案,使得人们可以更加方便地复用成功的设计和体系结构。设计模式一般有4个基本要素:(1)模式名称 (2)问题 (3)解决方案 (4)效果总体来说设计模式分为三大类:创建型,结构型和行为型。在...原创 2019-05-10 11:13:35 · 123 阅读 · 0 评论 -
抽象工厂模式
描述:给客户端提供一个接口,可以创建多个产品族中的产品对象。意图:提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。情景:假设汽车厂生产两种车型,一种豪华轿车,一种货车。而汽车又有宝马和奥迪两种品牌。 假设现在要生产宝马豪华轿车、宝马货车、奥迪豪华轿车和奥迪货车。 利用抽象工厂的方法做出具体实现,首先定义抽象产品豪华轿车(Limou...原创 2019-05-10 10:11:31 · 123 阅读 · 0 评论 -
命令模式
情景我想请舍友帮忙,帮我拿外卖上来。这个例子中,我即是命令的请求者Invoker,接收者自然就是舍友啦,roommateReceiver。命令即是让舍友帮忙拿外卖,命令可以有很多种,如买饮料啊,拿快递啊。所以通常设定为抽象类Command,具体的命令由其实现类实现。它的实现类要持有舍友的引用,这样才能让舍友帮忙拿外卖,舍友是具体实施操作,如拿外卖的具体对象。而“我”则持有命令的引用,只管对命令...原创 2019-05-19 15:00:59 · 134 阅读 · 0 评论 -
原型模式
1.定义:用原型实例指定创建对象的种类,并且通过复制(克隆)这些原型创建对象。2.类图:关键点:ProtoType(抽象原型类):它是声明clone方法的接口,是所有具体原型类的公共父类,可以是抽象类也可以是接口,甚至还可以是实现类。 ConcreteProtoType(具体原型类):它实现抽象原型类中的clone方法,在方法中返回自己的一个克隆对象。 Client...原创 2019-05-14 17:36:32 · 112 阅读 · 0 评论 -
状态模式
“状态变化”模式在组件构建过程中,某些对象的状态经常面临变化,通常要使用许多 if else 语句来判断对象的状态到底如何,然后才进行相对应的处理,这就使得代码不够优雅,如何对这些变化进行有效的管理?同时又维护高层模块的稳定?状态模式为这一问题提供了一种解决方案。典型的模式:State,Memento模式定义允许一个对象在其内部状态改变时改变它的行为。从而使对象看起来似乎修改了它...原创 2019-05-19 12:27:26 · 147 阅读 · 0 评论 -
工厂方法模式
描述:定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类实例化延迟到其子类。接着上一篇简单工厂模式来讲,可以看到新增了抽象工厂角色。关键点抽象工厂角色:这是工厂方法模式的核心。是具体工厂角色必须实现的接口或者必须继承的父类,在java中由接口或者抽象类来实现。 具体工厂角色:含有一定的商业逻辑和判断逻辑,在java中往往由一个具体类实现。 抽...原创 2019-05-09 16:17:11 · 167 阅读 · 0 评论 -
责任链模式
觉得写好的文章http://www.cnblogs.com/kym/archive/2009/04/06/1430078.html补充:适用性有多个的对象可以处理一个请求,哪个对象处理该请求运行时刻自动确定。 想在不明确指定接收者的情况向多个对象中的一个提交一个请求。 可处理一个请求的对象集合应被动态指定。...转载 2019-05-18 20:08:46 · 96 阅读 · 0 评论