设计模式
BrandoLv
这个作者很懒,什么都没留下…
展开
-
工厂方法模式(FactoryMethodPattern)
基本介绍: 工厂方法模式,又称工厂模式、多态工厂模式和虚拟构造器模式,通过定义工厂父类负责定义创建对象的公共接口,而子类则负责生成具体的对象。作用: 将类的实例化(具体产品的创建)延迟到工厂类的子类(具体工厂)中完成,即由子类来决定应该实例化(创建)哪一个类。解决的问题: 工厂一旦需要生产新产品就需要修改工厂类的方法逻辑,违背了“开放 - 关闭原则 package org.bra...原创 2018-03-30 14:29:48 · 211 阅读 · 0 评论 -
中介者模式(MediatorPattern)
基本介绍: 用一个中介者对象封装一系列的对象交互,中介者使各对象不需要显示地相互作用,从而使耦合松散,而且可以独立地改变它们之间的交互。可以将网状结构变为星状结构,使同事类之间的关系变的清晰。示例代码:package org.brando;/** * * 类说明: 测试类 * @author Brando 2018年3月29日 下午2:03:59 */public class...原创 2018-06-06 15:02:06 · 126 阅读 · 0 评论 -
命令模式(CommandPattern)
基本介绍: 命令模式是一个高内聚的模式,将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请 求排队或者记录请求日志,可以提供命令的撤销和恢复功能.该模式分为三个角色: 看到三个角色: Receiver执行者:该角色就是干活的角色,命令传递到这里是应该被执行的 Command命令角色:需要执行的所有命令都在这里声明 Invoker调用者角色:接收到命令,并执行命令示例代码...原创 2018-05-18 11:54:02 · 238 阅读 · 0 评论 -
享元模式(FlyweightPattern)
基本介绍: 采用一个共享来避免大量拥有相同内容对象的开销。这种开销中最常见、直观的就是内存的损耗。享元模式以共享的方式高效的支持大量的细粒度对象。示例代码:package org.brando;import org.brando.FlyweightFactory.WordTypeEnum;/** * * 类说明: 测试类 * @author Brando 2018年3月29日...原创 2018-05-04 16:22:59 · 149 阅读 · 0 评论 -
模板方法模式(TemplateMethodPattern)
基本介绍: 模板方法:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。 T模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤.1. 模板方法模式是基于继承的代码复用基本技术,模板方法模式的结构和用法也是面向对象设计的核心之一。在模板方法模式中,可以将相同的代码放在父类中,而将不同的方法实现放在不同的子类中。2. 在模板方法模式中,我们需要准备一个抽象类,将部分逻辑以...原创 2018-05-17 15:37:18 · 169 阅读 · 0 评论 -
装饰器模式(DecoratorPattern)
基本介绍: 装饰器模式是一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。示例代码:package org.brando;/** * * 类说明: 测试类 * @author Brando 2018年3月29日 下午2:03:59 */public class Launcher { pu...原创 2018-05-03 17:11:26 · 202 阅读 · 0 评论 -
组合模式(CompsitePattern)
基本介绍: 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。示例代码:package org.brando;/** * * 类说明: 测...原创 2018-05-03 14:44:10 · 202 阅读 · 0 评论 -
解释器模式(InterpreterPattern)
基本介绍: 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子。1. 文法:即语法规则。在解释器模式中每一个语法都将对应一个解释器对象,用来处理相应的语法规则。它对于扩展、改变文法以及增加新的文法规则都很方便。2. 解释器模式描述了如何为简单的语言定义一个文法,如何在该语言中表示一个句子,以及如何解释这些句子。3. 在解释器模式中可以通过一种称之为...原创 2018-05-09 16:26:23 · 123 阅读 · 0 评论 -
桥接模式(BridgePattern)
基本介绍: 桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化。它是一种对象结构型模式,又称为柄体(Handle and Body)模式或接口(Interface)模式示例代码:package org.brando;/** * * 类说明: 测试类 * @author Brando 2018年3月29日 下午2:03:59 */public class Launc...原创 2018-05-02 18:01:37 · 212 阅读 · 0 评论 -
适配器模式(AdapterPattern)
基本介绍: 将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。主要解决: 主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。类适配器示例代码:package org.brando;/** * * 类说明: 测试类 * @author Brando 2018年3月29日...原创 2018-05-02 11:30:00 · 123 阅读 · 0 评论 -
简单工厂(SimpleFactory)
基本介绍: 简单工厂模式又称为静态工厂方法模式属于类的创建型模式 而它的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类的实例。 也就是生产你要创建的实体对象 。简单工厂模式实际上不属于23个GOF模式,但他可以作为工厂方法模式的一个引导.示例代码:package org.brando;import org.brando.AnimalFactory.AnimalTyp...原创 2018-03-29 15:29:57 · 102 阅读 · 0 评论 -
单例模式(SingletonPattern)
基本介绍: 单例模式是为确保一个类只有一个实例,并为整个系统提供一个全局访问点的一种模式方法. 从概念中体现出了单例的一些特点: 1.在任何情况下, 单例类永远只有一个实例存在. 2.单例需要有能力为整个系统提供这一唯一实例.示例代码:饥饿式:package org.brando;/** * * 类说明: 测试类 * @author Brando...原创 2018-03-29 13:48:14 · 133 阅读 · 0 评论 -
代理模式(ProxyPattern)
基本介绍: 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法.示例代码:package org.brando;/** * * 类说...原创 2018-03-29 10:07:29 · 163 阅读 · 0 评论 -
建造者模式(BuilderPattern)
基本介绍: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.作用: 在用户不知道对象的建造过程和细节的情况下就可以直接创建复杂的对象。用户只需要给出指定复杂对象的类型和内容, 建造者模式负责按顺序创建复杂对象.package org.brando;/** * * 类说明: 测试类 * @author Brando 2018年3月29日 下午2:03...原创 2018-04-11 16:45:22 · 106 阅读 · 0 评论 -
责任链模式(ResponsibilityChainPattern)
基本介绍: 职责链模式(称责任链模式)将请求的处理对象像一条长链一般组合起来,形成一条对象链。请求并不知道具体执行请求的对象是哪一个,这样就实现了请求与处理对象之间的解耦。 生活中这种情况其实很常见,公司部门之中,政府部门之中都有体现,在公司部门中,当你提交一份请求文件给你的直接上级时,你的直接上级可以处理这个文件,若他觉得自己不够资格,会将文件传递为他的直接上级,这样文件请求在这条链...原创 2018-03-28 11:47:48 · 364 阅读 · 0 评论 -
迭代器模式(IteratorPattern)
基本介绍: 迭代器模式:提供一种方法顺序的访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。示例代码:package org.brando;/** * * 类说明: 测试类 * @author Brando 2018年3月29日 下午2:03:59 */public class Launcher { public static void main(String[] ...原创 2018-05-31 17:38:37 · 192 阅读 · 0 评论