设计模式
VaderZhang
大学生
展开
-
代理模式
代理模式: 为其他对象提供一种代理以控制对这个对象的访问。通俗的说,就是通过一个代理中介,来完成对象的行为。代理模式组成: 1、抽象类:真实角色和代理角色的共同接口。2、真实类:代理角色所代表的真实角色。代理角色中的行为最终由真实角色实现。3、代理类:保存一个真实类的引用是的代理可以访问真实类,并提供一个与抽象类接口相同的接口,这样代理就可以替代真实类。代码实例: 以追求女生为例,男一号追求一原创 2017-07-10 23:01:21 · 220 阅读 · 0 评论 -
单例模式
单例模式: 单例模式(Singleton):保证一个类只有一个实际,并提供一个访问它的全局访问点。有时我们需要一个类在进程中只有一个实例对象,比如我们点击一个图标,打开一个程序,再次点击图标时,因为程序已经打开,就不再重复打开。这时候我们就需要只有一个程序对象被实例化。通常我们可以让一个全局变量使得一个对象被访问,但他不能防止你实例化多个对象。一个最好的办法是,让类自行负责保存它的唯一实例对象。这原创 2017-08-20 10:45:01 · 284 阅读 · 0 评论 -
组合模式
组合模式:将对象组合成树形结构以表示“部分-整体”的层次结构。组合模式使得单个对象和组合对象的使用具有一致性。组合模式可以优化递归或者分级数据结构。比如在文件系统中,每一个目录都可以装内容,目录的内容可以是文件或者目录。这个过程就可以用组合模式来描述。组合设计模式组成: 抽象构建角色(component):组合中的对象声明借口,在适当情况下,实现所有类共有接口的默认行为。声明一个接口用于访问和管理原创 2017-08-12 12:55:09 · 303 阅读 · 0 评论 -
命令模式
命令模式: 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可测销的操作。在软件系统中,行为请求者和行为实现者通常是一种紧耦合的关系,但在某些场合,需要对请求做记录,有撤销等处理时,这种紧耦合就难以处理,需要用到一个接收者(Invoker)。命令模式组成: 抽象命令角色(Command):定义命令的接口,声明执行的方法;具体命令角色(Conc原创 2017-08-12 12:47:58 · 247 阅读 · 0 评论 -
桥接模式
桥接模式: 将抽象与它的实现分离,使它们都可以独立的变化。桥接模式组成: 1、抽象角色(Abstration):抽象类或者接口,多维度变化的其中一个维度,抽象角包含实现角色的对象。抽象角色中的操作方法通过调用实现角色中的方法实现。2、实现角色(Implementor):多维度变化的其中一个维度,实现角色定义具体的操作方法模板。3、被提炼的抽象角色(RefinedAbstraction):继承自抽原创 2017-07-25 23:06:11 · 313 阅读 · 0 评论 -
适配器模式
适配器模式(Adapter): 将一个类的接口转换成客户端想要的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。比如在生活中,我们的笔记本电脑使用的电压大概在20V左右,但我们的生活用电电压在220V。怎么办呢?于是我们会使用一个电源适配器,将220V电转成20V电给笔记本电脑使用。适配器就是将一个功能类似但接口不同的类转成客户端能够使用的接口。适配器模式组成:原创 2017-07-30 18:39:30 · 275 阅读 · 0 评论 -
观察者模式
观察者模式: 观察者模式又叫发布-订阅(Public/Subscirbe)模式。 观察者模式定义了一种一对多的依赖关系,让多个观察者同时监听某一个主题对象。这个主题对象状态发生改变时,会通知所有观察者对象,使他们能够完成自我更新。观察者模式组成: 在一个软件系统中,常常要求一个对象的状态变化时,某些其他的对象状态也相应的发生改变。观察这模式可以用来处理这种情况。 观察者模式组成: 1、抽象原创 2017-07-20 23:17:16 · 244 阅读 · 0 评论 -
建造者模式
建造者模式: 将一个复杂对象的构建也它的表示分离,使得同样的构建过程可创建不同的表示。 创建者模式组成: 1、抽象建造者角色(Builder):为创建一个Product对象的各个部件指定的抽象类或接口。2、具体建造者类(ConcreteBuilder):实现Builder接口,构造和装配各个部件。3、产品角色(Product):产品角色类。4、指挥者角色(Director):根据需求使用Bui原创 2017-07-16 18:38:27 · 255 阅读 · 0 评论 -
外观设计模式
外观设计模式: 为子系统中的一组接口提供一个一致的界面,此模式定义一个高层接口,这个接口使得这个子系统更加容易使用。引入外观模式后,客户端只需要和外观接收交互,而不需要于子系统交互,从而降低客户端于子系统的耦合度。外观设计模式组成: 1、外观角色(Facade):是外观设计模式的核心类,知道子系统的功能,负责和客户端交互,并根据客户端已有的需求预定几种功能组合。2、子系统角色(SubSystem原创 2017-07-16 10:17:55 · 565 阅读 · 0 评论 -
模板方法模式
模板方法模式: 定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些步骤。模板方法组成: 1、抽象类:一个抽象模板,给出一个顶级逻辑骨架,而逻辑的组成步骤在相应的抽象操作中,推出到子类实现。 2、具体类:继承抽象类并实现一个或多个抽象方法。 使用一份试卷,测试人员抄写题目并作答的代码为例:// 试卷抽象类public a原创 2017-07-14 23:47:46 · 207 阅读 · 0 评论 -
原型模式
原型模式: 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 类图: 原型模式主要用于对象的复制,其核心是Prototype类。JAVA中Prototype类具备以下两个条件: - 实现Cloneable接口。JAVA中有一个Cloneable接口,作用是通知虚拟机可以安全的在实现了此接口的类上使用clone方法。在JAVA中,只有实现了Cloneable才能使用clone方原创 2017-07-12 23:32:32 · 193 阅读 · 0 评论 -
工厂模式
工厂模式: 工厂模式是对简单工厂模式的进一步抽象。工厂模式定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。工厂模式组成: 1、抽象工厂类:具体工厂类需要实现的接口或抽象类。2、具体工厂类:实现或继承自抽象工厂类,用于生产具体的产品类。3、抽闲产品类:具体产品需要实现的接口或抽象类。4、具体产品类:被具体工厂类创建对象,客户端实际操作对象。具体工厂实现抽原创 2017-07-11 23:41:12 · 209 阅读 · 0 评论 -
简单工厂模式
简单工厂模式: 简单工厂模式主要通过定义一个工厂类来实例化其他的,而这些其他类通常继承自同一个父类。简单工厂模式组成: 简单工厂模式主要有三部分组成:1、工厂类:这是工厂模式的核心,用于创建其他类的实例。2、抽闲类或接口:简单工厂所实例化的所有类的父类。3、具体类:抽象类或接口的子类用于实现具体的逻辑操作。用一个简单的计算器作为例程代码:抽象类 Operation/* 抽象类 Operation原创 2017-07-08 22:09:14 · 309 阅读 · 0 评论 -
策略模式
策略模式:策略模式定义了算法家族,并分别分装起来,使算法可以独立与使用它的客户端变化。策略模式的组成:1、策略类:定义所有支持的算法的公共接口。2、Context(上下文):维护策略类对象的使用。3、具体策略类:继承自策略类的具体算法或行为。uml图如下: 实例代码如下: 策略类:abstract public class Strategy { public abstract void A原创 2017-07-09 11:46:20 · 209 阅读 · 0 评论 -
装饰模式
装饰模式:装饰模式能够动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。装饰模式的组成: 1、抽象组件(Component):定义一个接口,可以给这些对象动态的添加职责,是被修饰者。2、具体组件(ConcreteComponent):继承自抽象组件的具体对象,也可以给这个对象添加一些职责。3、装饰者(Decorator):装饰抽象类,用于扩展Component的功能,原创 2017-07-09 20:38:47 · 226 阅读 · 0 评论 -
状态模式
状态模式: 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到不同的状态的一系列类当中,实现把复杂逻辑简化和逻辑间解耦。状态模式组成: 、1、抽象状态角色(State):定义一个接口以封装与Context的一个特定状态相关的行为。2、具体状态角色(ConcretState):继承自原创 2017-07-28 20:31:27 · 406 阅读 · 0 评论