自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 设计模式go语言实现----备忘录模式Memento

1 定义备忘录(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可以将该对象恢复到原先保存的状态UML类图:备忘录模式包含三个角色:Originator(发起人):负责创建一个备忘录Memento,用以记录当前时刻它的内部状态,并可以使用备忘录恢复内部状态。Originator可根据需要决定Memento存储Originato...

2018-11-25 22:31:32 404

原创 设计模式go语言实现----模板方法模式TemplateMethod

1 定义模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤特点:通过把不变行为搬移到超类,去除子类中的重复代码,提供了一个很好的代码复用平台UML类图:2 go语言实现2.1 实现超类Person以及一个IPerson接口type IPerson interface { SetName...

2018-11-25 11:46:03 1015

原创 设计模式go语言实现----原型模式Prototype

1 定义原型模式(Prototype),用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象UML类图:原型模式包含以下三个角色:Prototype(抽象原型类):它是声明克隆方法的接口,是所有具体原型类的公共父类,可以是抽象类也可以是接口,甚至还可以是具体实现类。ConcretePrototype(具体原型类):它实现在抽象原型类中声明的克隆方法,在克隆方法中返回自己...

2018-11-11 21:54:51 673

原创 设计模式go语言实现----策略模式Strategy

1 定义策略模式(Strategy):它定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响道使用算法的客户。模式动机:为了解决在有多种算法相似的情况下,使用if…else所带来的复杂和难以维护性,这样定义一系列的算法,把它们一个个封装起来,并且使它们相互替换。策略模式包含以下几个角色:Context(环境类):负责使用算法策略,其中维持了一个抽象策略...

2018-11-10 12:02:01 397

原创 设计模式go语言实现----状态模式State

1 定义状态模式(State): 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类模式动机:当控制一个对象状态转换的条件表达式过于复杂时,将状态的判断逻辑转移道表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。UML类图:状态模式包含如下几个角色:Context(环境类):维护一个ConcreteState子类的实例,这个实例定义当前的状态State...

2018-11-04 08:31:23 1778

原创 设计模式go语言实现----观察者模式Observer

1 定义观察者模式(Observer):定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个柱体对象,这个柱体对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己UML类图:...

2018-11-03 16:28:01 726

原创 设计模式go语言实现----中介者模式mediator

1 定义中介者模式(Mediator): 用一个中介对象来封装一系列的对象交互。中介者使各对象不需要显式地相互引用,从而使其耦合松散,而且可以独立地改变它们之间地交互模式动机:对于一个模块,可能由很多对象构成,而且这些对象之间可能存在相互的引用,为了减少对象两两之间复杂的引用关系,使之称为一个松耦合的系统,这就是中介者模式的模式动机UML类图:中介者模式包含以下四个角色:Med...

2018-11-03 13:55:40 810

原创 设计模式go语言实现----命令模式command

1 定义命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作模式动机:命令模式可以将发送者和接收者完全解耦,发送者与接收者之间没有直接引用关系,发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求。UML类图:命令模式包含以下四个角色:Receiver(接收者): 接收者执行与请求相...

2018-11-03 11:31:42 896

原创 设计模式go语言实现----代理模式proxy

1 定义代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问UML类图:代理模式主要包含以下三个角色:Subject(抽象主题角色):定义了Proxy和RealSubject的共用接口,这样就在任何使用RealSubject的地方都可以使用ProxyRealSubject(真实主题角色):定义了Proxy所代表的真实实体Proxy(代理主题角色):保存一个Sub...

2018-11-01 23:05:48 689

原创 设计模式go语言实现----享元模式flyweight

1 定义享元模式(Flyweight),运用共享技术有效地支持大量细粒度对象。系统只使用少量对象,而这些对象都很相似,状态变化很小,可以实现对象地多次复用。由于享元模式要求能够共享地对象必须是细粒度对象,因此又称为轻量级模式,是一种结构型模式定义如果不是很好理解地话,读者可以对照下面围棋地例子细细品味:围棋棋盘中包含大量的黑子和白子,它们形状、大小都一模一样,只是出现的位置不同而已。U...

2018-11-01 22:24:45 456

原创 设计模式go语言实现----外观模式facade

1 概念外观模式(facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。如果定义不是很理解的话,读者可以对照下面电脑的例子认真思考一下:电脑整机时CPU、内存、硬盘等的外观,有了这个外观之后,启动电脑和关闭电脑都简化了。UML类图:外观模式主要包含两个角色:Facade(外观角色): 在客户端可以调用这个角色的方法...

2018-11-01 20:44:28 514

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除