大话设计模式
学习设计模式的一些感受、总结
枫轻·
这个作者很懒,什么都没留下…
展开
-
设计模式-备忘录模式(Memento)
一、备忘录模式(Memento)定义:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态。理解:玩游戏打BOSS前的存档,丝毫不会影响游戏内容。二、备忘录模式UML图(1)Originator(发起人):负责创建一个备忘录Menento,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Originat...原创 2018-12-06 07:44:03 · 127 阅读 · 5 评论 -
设计模式-状态模式(State)
一、状态模式(State)定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类理解:状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。二、状态模式UML图(1)State:抽象状态类,定义一个接口与封装Context的一个特定状态相关的行为(2)Conc...原创 2018-12-05 15:02:30 · 135 阅读 · 4 评论 -
设计模式-原型模式(Protorype)
一、原型模式(Protorype)定义:用原型实例制定创建对象的种类,并且通过拷贝这些原型创建新的对象理解:其实就是从一个对象在创建另外一个可定制的对象,而且不需要知道任何创建的细节二、原型模式UML图三、代码实现原型类abstract class Prototype { private string id; public P...原创 2018-12-05 14:31:37 · 264 阅读 · 2 评论 -
设计模式-单例模式(Singleton)
一、单例模式(Singleton)定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点二、单例模式UML图Singleton:定义一个GetInstance操作,允许客户访问它的唯一实例。GetInstance是一个静态方法,主要负责创建自己的唯一实例三、代码实现SingIeton类class SingIeton { private st...原创 2018-12-05 11:45:51 · 115 阅读 · 4 评论 -
设计模式-适配器模式(Adapter)
一、适配器模式(Adapter)定义:将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本优于接口不兼容而不能一起工作的那些类可以一起工作理解:定义一个类,用于包装(转换)不兼容的接口的对象二、适配器模式UML图(1)Target:客户所期待的接口。目标可以是具体的抽象的类,也可以是接口(2)Adaptee:需要适配的类(3)Adapter:通过在内部...原创 2018-12-05 11:17:38 · 121 阅读 · 4 评论 -
设计模式-抽象工厂模式(Abstract Factory)
一、抽象工厂模式(Abstract Factory)定义:提供一个穿件一系列相关或相互依赖对象的接口,而无需制定他们具体的类抽象工厂模式与工厂方法模式最大的区别在于:抽象工厂中每个工厂可以创建多种类的产品,而工厂方法每个工厂只能创建一个类二、抽象工厂模式UML图(1)AbstractProductA和AbstractProductB:是两个抽象产品(2)ProductA1、...原创 2018-12-05 10:54:54 · 169 阅读 · 2 评论 -
设计模式-观察者模式(Observer)
一、观察者模式(Observer)定义:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己二、观察者模式UML图(1)Subject:可翻译为主题或抽象通知者,一般用一个抽象类或者一个接口实现。它把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口...原创 2018-12-05 10:23:44 · 98 阅读 · 0 评论 -
设计模式-建造者模式(Builder)
一、建造者模式(Builder)定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示二、建造者模式UML图(1)Builder:为创建一个Product对象的各个部件指定的抽象接口(2)ConcreteBuilder:具体建造者,实现Builder接口,构造和装配各个部件(3)Product:构建出来的具体产品(4)Director:指挥者,直...原创 2018-12-05 09:37:00 · 122 阅读 · 1 评论 -
设计模式-外观模式(Facade)
一、外观模式(Facade)定义:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用理解:定义了一个统一的接口,外部的客户端通过这个统一的接口来对子系统中的一群接口进行访问,就是创建一个类,包装子系统中很多的类,客户端外观模式类来吊钟内部自己系统的方法二、外观模式UML图三、代码实现四个子系统的类 class SubS...原创 2018-12-05 08:59:53 · 121 阅读 · 1 评论 -
设计模式-模板方法模式(TemplateMethod)
一、模板方法模式(TemplateMethod)定义:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。理解:定义了一个模板结构,推迟到子类中去实现二、模板方法模式UML图(1)AbstractClass(抽象类):也是一个抽象模板,定义并实现了模板方法,推迟到子类中去实现(2)ConcreteC...原创 2018-12-05 08:32:20 · 172 阅读 · 1 评论 -
设计模式-工厂方法模式(Factory Method)
一、工厂方法模式(Factory Method)定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类 理解:通过定义抽象工厂父类来定义创建对象的公共接口,子类来决定生成的具体对象(即由子类来决定应该创建哪一个类)二、工厂方法模式UML图三、代码实现工厂类 public class OperationFactory { ...原创 2018-12-05 07:56:33 · 173 阅读 · 1 评论 -
设计模式-代理模式(Proxy)
一、代理模式(Proxy)定义:为其他对象提供一种代理以控制对这个对象的访问自己的理解:给目标对象提供一个代理对象,让代理对象控制对目标对象的引用二、代理模式UML图(1)Subject:定义了RealSubject(真实对象)和Proxy(代理对象)的公共接口,这样就在任何使用RealSubject的地方都可以用Proxy(2)RealSubject(真实对象):定义了P...原创 2018-12-04 20:30:00 · 92 阅读 · 1 评论 -
设计模式-装饰模式(Decorator)
一、装饰模式(Decorator)动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活二、装饰模式UML图(1)Component:定义了一个对象接口,可以给这些对象动态的添加职责(2)ConcreteComponent:定义了一个具体的对象,可以给这个对象添加一些职责(3)Decorator:装饰抽象类,集成了Component,从外类来扩展Co...原创 2018-12-04 19:03:09 · 81 阅读 · 2 评论 -
设计模式-策略模式(Strategy)
一、策略模式(Strategy)它定义了一系列的算法,将算法都分别封装起来,并且让它们之间可以相互替换(具有共性,有同一个策略接口),独立于使用它的人来独立变化二、策略模式UML图三、代码实现Strategy类,定义所有支持的算法的公共接口abstract class Strategy{ //算法方法 public abstract void Algori...原创 2018-12-04 15:46:46 · 137 阅读 · 3 评论 -
设计模式-简单工厂模式
一、什么是简单工厂简单工厂是在实例化对象的时候用到的,比如:到底要实例化谁,将来会不会增加实例化的对象,这些非常容易变动,所以用一个单独的类来做这个创造实例的过程,这就是工厂二、简单工厂UML类图三、代码实现1.运算类//Operation运算类 public class Operation { priv...原创 2018-12-02 21:43:11 · 85 阅读 · 3 评论