设计模式
文章平均质量分 84
javazcw
这个作者很懒,什么都没留下…
展开
-
设计模式-抽象工厂模式
今天来介绍一下另一个复杂一点的抽象工厂模式。1.UML类图IUser和IDepartment是想要创建的产品的抽象接口,而SqlserverUser、AccessUser和SqlserverDepartment、AccessDepartment分别是其两种不同的具体产品实现类。IFactory是抽象工厂,其中定义了创建两种产品的接口,其具体实现类实现这两个方法根据需求创建不同的IUser和IDep...原创 2018-02-28 23:00:21 · 157 阅读 · 0 评论 -
设计模式-享元模式
1.UML类图FlyweightFactory是一个享元工厂,用来创建并管理Flyweight对象。它主要是用来确保合理地共享Flywight,当用户请求一个Flywight时,FlyweightFactory对象提供一个已经创建好的实例或者创建一个,如果实例不存在的化话。Flyweight是所有享元类的超类或者接口,通过这个接口,Flyweight可以接受并作用于外部状态。ConcreteFly...原创 2018-03-28 00:22:21 · 142 阅读 · 0 评论 -
设计模式-命令模式
1.UML类图Invoker要求该命令执行这个请求。Command用来声明执行操作的接口。ConcreteCommand将一个接收者对象绑定于一个动作,调用接收者相应的操作,以实现Execute。Receiver知道如何实施与执行一个请求相关的操作,任何类都可能作为一个接收者。2.示例代码public abstract class Command { protected Receiver r...原创 2018-04-03 23:27:01 · 76 阅读 · 0 评论 -
设计模式-代理模式
1.UML类图Subject类,定义了RealSubject和Proxy的公用接口,这样就在任何情况下使用RealSubject的地方都可以使用Proxy。Proxy类,保存一个引用使得代理可以访问实体,并提供一个与Subject的接口相同的接口,这样代理就可以用来代替实体。RealSubject类,定义Proxy所代表的真实实体。2.示例代码public abstract class Subje...原创 2018-03-28 23:47:36 · 85 阅读 · 0 评论 -
设计模式-职责链模式
1.UML类图 Handler定义一个处理请示的接口。ConcreteHandler1和ConcreteHandler2是具体的处理者类,处理它所负责的请求,可访问它的后继者,如果可处理该请求,就处理之,否则就将该请示转发给它的后继者。...原创 2018-05-20 23:44:11 · 102 阅读 · 0 评论 -
设计模式-解释器模式
1.UML类图Context包含解释器之外的一些全局信息。AbstractExpression是抽象表达式,声明一个抽象的解释操作,这个接口为抽象语法树中所有节点所共享。TerminalExpression是终结符表达式,实现与文法中的终结符相关联的解释操作。NonterminalExpression是非终结符表达式,为文法中的非终结符实现解释操作。对文法中每一条规则都需要一个具体的非终结符表达式...原创 2018-05-21 22:49:13 · 132 阅读 · 0 评论 -
设计模式-策略模式
1.UML类图2.示例代码3.特点策略模式,它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有算法,减少了各种算法类与使用算法类之间的耦合。策略模式的Strategy类层次为Context定义了一系列的可供重用的算法或行为。...原创 2018-05-26 11:44:10 · 102 阅读 · 0 评论 -
设计模式-中介者模式
1.UML类图Mediator是抽象中介者,定义了同事对象到中介者对象的接口。Colleague事抽象同事类。ConcreteMediator是具体中介者对象,实现抽象类的方法,它需要知道所有具体同事类,并从具体同事类接收消息,向具体同事类对象发出命令。ConcreteColleague是具体同事类,每个具体同事只知道自己的行为,而不了解其他同事类的情况,但它们却都认识中介者对象。2.示例代码pu...原创 2018-05-22 23:07:53 · 106 阅读 · 0 评论 -
设计模式-访问者模式
1.UML类图Visitor为该对象结构中ConcreteElement的每一个类声明一个visit操作。ConcreteVisitor是具体的访问者,实现每个由Visitor声明的操作,每个操作实现算法的一部分,而该算法片段乃是对应于结构中对象的类。ObjectStructure能枚举它的元素,可以提供一个高层接口以允许访问者访问它的元素。Element定义一个accept操作,它以一个访问者为...原创 2018-05-23 23:06:26 · 148 阅读 · 0 评论 -
设计模式-备忘录模式
1.UML类图Originator负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Memento负责存储Originator对象内部状态,并可防止Originator以外的其他对象访问备忘录Memento。Caretaker负责保存备忘录Memento。...原创 2018-05-29 23:15:19 · 116 阅读 · 0 评论 -
设计模式-模版方法模式
1.UML类图AbstractClass实现了一个模版方法,定义了算法的骨架,具体子类将重定义PrimitiveOperation以实现一个算法的步骤。ConcreteClass实现PrimitiveOperation以完成算法中与特定子类相关的步骤。2.示例代码模版方法,定义了算法的骨架。public abstract class AbstractClass { public abstra...原创 2018-04-02 23:58:44 · 81 阅读 · 0 评论 -
设计模式-状态模式
1.UML类图 State是抽象状态类,定义一个接口以封装与Context的一个特定状态相关的行为。ConcreteStateA,ConcreteStateB,ConcreteStateC是具体状态,每一个子类实现一个与Context的一个状态相关的行为。Context类维护一个ConcreteState子类的实例,这个实...原创 2018-04-08 23:33:09 · 94 阅读 · 0 评论 -
设计模式-组合模式
1.UML类图Component是组合中的对象声明接口,在适当情况下,实现所有类共有接口的默认行为,声明一个接口用于访问和管理Component的子部件。Leaf在组合中表示叶节点对象,叶节点对象没有子节点。Composite定义有枝节点行为,用来存储子部件,在Component接口中实现与子部件有关的操作,比如增加add和删除remove。2.示例代码public abstract class ...原创 2018-03-21 23:10:22 · 135 阅读 · 0 评论 -
设计模式-单例模式
1.UML类图Singleton类,定义一个getInstance操作,允许客户端访问它的唯一实例。getInstance是一个静态方法,主要负责创建自己的唯一实例。2.示例代码(1)没有考虑多线程的单例模式public class Singleton { private static Singleton instance; private Singleton() { } ...原创 2018-03-15 23:52:34 · 115 阅读 · 0 评论 -
设计模式-工厂方法模式
1.UML类图Creator是一个工厂类接口,它声明工厂方法,该方法返回一个Product类型的对象。ConcreteCreator是具体的工厂类它实现了Creator接口,并重定义了工厂方法返回一个ConcreteProduct实例。Product定义工厂方法所要创建的对象接口。ConcreteProduct是具体的产品,实现了Product接口。2.示例代码工厂类接口public interf...原创 2018-03-11 16:23:50 · 140 阅读 · 0 评论 -
设计模式-简单工厂模式
最近看了《大话设计模式》一书,其中好多模式的设计思想着实令人着迷,强烈的求知欲驱使着我想彻底搞懂常用的23种设计模式的设计思想。研读了整本书,并将书中的例子实现了一遍后,感觉掌握的还是不够熟练,遂产生了想将这23种设计模式写成博客的想法,以期提取书中介绍的重点知识,复习体会,加深理解。做成笔记,并留以记录,以供日后参考。将23种设计模式分成三类进行介绍,分别为创建型模式、结构型模式、行为型模式。今...原创 2018-02-25 23:49:35 · 179 阅读 · 0 评论 -
设计模式-适配器模式
前面说了5种创建型模式,今天开始结构型模式的介绍,首先来看一下适配器模式。1.UML类图Target是客户期望的接口,目标可以是具体的类或者抽象的类,也可以是接口。Adapter是适配器,通过在内部包装一个Adaptee对象,把源接口转换为目标接口。Adaptee是需要适配的类。2.示例代码客户所希望的接口。public class Target { public void request(...原创 2018-03-18 22:01:47 · 102 阅读 · 0 评论 -
设计模式-桥接模式
1.UML类图拿手机来举个例子好理解一些,Abstraction就是手机品牌,RefinedAbstraction就是某个具体的手机品牌如:三星,苹果等。Implementor就是手机软件,ConcreteImplementorA是三星手机通讯录,ConcreteImplentorB是苹果手机游戏。将手机品牌这个抽象和手机软件这个实现分离开,让它们独立变化,这样的耦合很松散。比如现在又要新增一个华...原创 2018-03-19 23:00:43 · 103 阅读 · 0 评论 -
设计模式-原型模式
1.UML类图Prototype是原型类,声明一个克隆自身的接口。ConcretePrototype1,ConcretePrototype2是具体的原型类,实现一个克隆自身的操作。Client客户端依赖一个Prototype,让原型克隆自身从而创建一个新对象。2.示例代码实现Jdk自带的克隆接口,实现原型类。public abstract class Prototype implements Cl...原创 2018-03-13 22:19:11 · 103 阅读 · 0 评论 -
设计模式-装饰者模式
1.UML类图Component是定义一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent是定义一个具体对象,也可以给这个对象添加一些职责。Decorator,装饰抽象类,继承了Component,从外类来扩展Component类的功能,但对于Component来说,是无需知道Decorator的存在的。ConcreteDecorator就是具体的装饰对象,起到给Comp...原创 2018-03-24 23:45:37 · 101 阅读 · 0 评论 -
设计模式-建造者模式
1.UML类图Builder是为创建一个Product对象的各个部件指定的抽象接口。ConcreteBuilder是具体的建造者,实现Builder接口,构造和装配各个部件。Director是指挥者,是构建一个使用Builder接口的对象。Product是具体产品。2.示例代码指挥者,有一个Builder类型的成员变量。public class Director { private Buil...原创 2018-03-20 23:54:43 · 88 阅读 · 0 评论 -
设计模式-外观模式
1.UML类图Facade外观类,知道哪些子系统类负责处理请求,将客户的请求代理给适当的子系统对象。SubSystem Classes子系统类集合,实现子系统的功能,处理Facade对象指派的任务,注意子类中没有Facade的任何信息,即没有对象的引用。2.示例代码public class Facade { private SubSystemOne subSystemOne; priv...原创 2018-03-26 00:05:34 · 147 阅读 · 0 评论 -
设计模式-迭代器模式
1.UML类图Aggregate是聚集抽象类。ConcreteAggregate是具体聚集类,继承Aggregate。Iterator是迭代抽象类,用于定义得到开始对象、得到下一个对象、判断是否到结尾、当前对象等抽象方法,统一接口。ConcreteIterator是具体迭代器类,继承Iterator,实现开始、下一个、是否结尾、当前对象等方法。2.代码示例public abstract class...原创 2018-05-30 21:16:02 · 116 阅读 · 0 评论