大话设计模式笔记
文章平均质量分 55
Arururururu
这个作者很懒,什么都没留下…
展开
-
《大话设计模式》单例模式
单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。 通常我们可以让一个全局变量使得一个对象被访问,但它不能防止你实例化多个对象。一个最好的办法就是,让类自身负责保存它的唯一实例。这个类可以保证没有其他实例可以被创建,并且它可以提供一个访问该实例的方法。 // 每次都加锁,效率可能较低 // lockcheck/singleton.go var ( instance *singleton lock sync.Mutex ) type singleton stru.原创 2021-03-17 16:34:23 · 99 阅读 · 0 评论 -
《大话设计模式》迭代器模式
迭代器模式(Iterator),提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。 优点: 支持以不同的方式遍历一个聚合对象 简化了聚合类 既可以做到不暴露集合的内部结构,又可让外部代码透明地访问集合内部的数据。 缺点: 由于迭代器模式将存储数据和遍历数据的职责分离,增加新的聚合类需要对应增加新的迭代器类,类的个数成对增加,在一定程度上增加了系统的复杂性 // 具体迭代器需实现的接口 type IteratorInterface interface { Firs.原创 2021-03-17 16:26:05 · 77 阅读 · 0 评论 -
《大话设计模式》抽象工厂模式
抽象工厂模式(Abstract Factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。 优点: 易于更换产品系列 由于具体工厂类,在一个应用中只需要在初始化的时候出现一次,这就使得改变一个应用的具体工厂变得非常容易,它只需要改变具体工厂即可使用不同的产品配置。我们的设计不能去防止需求的更改,那么我们的理想便是让改动变得最小,现在如果你要更改数据库访问,我们只需要更改具体工厂就可以做到。 降低耦合 让具体的创建实例过程与客户端分离,客户端是通过它们的抽象接口操纵实.原创 2021-03-17 16:17:24 · 143 阅读 · 0 评论 -
《大话设计模式》观察者模式
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 优点: 解除耦合,让耦合的双方都依赖于抽象,而不是依赖于具体,从而使得各自的变化都不会影响另一边的变化。 缺点: 如果一个被观察者对象有很多的直接和间接的观察者的话,将所有的观察者都通知到会花费很多时间。 如果在观察者和观察目标之间有循环依赖的话,观察目标会触发它们之间进行循环调用,可能导致系统崩溃。 观察者模式没有相应的机制让观察者知道所观.原创 2021-03-17 16:07:27 · 143 阅读 · 0 评论 -
《大话设计模式》模板方法模式
模板方法模式,定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。[DP] 模板方法模式提供了一个很好的代码复用平台,通过把不变行为搬移到超类,去除子类中的重复代码来体现它的优势。 有时候,我们会遇到由一系列步骤构成的过程需要执行。这个过程从高层次上看是相同的,但有些步骤的实现可能不同。当不变的和可变的行为在方法...原创 2020-02-15 17:22:34 · 181 阅读 · 0 评论 -
《大话设计模式》原型模式
原型模式(Prototype), 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。[DP] 原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需知道任何创建的细节。 原型模式不需要重新初始化对象,而是动态地获得对象运行时的状态。通过调用构造函数来创建对象时,每new一次, 都需要执行一次构造函数,如果构造函数的执行时间很长,那么多次的执行初始化操作将十分低效。一般...原创 2020-02-08 18:12:46 · 151 阅读 · 0 评论 -
《大话设计模式》代理模式
代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。[DP] 代理模式其实就是在访问对象时引入一定程度的间接性,因为这种间接性,可以附加多种用途(远程代理、虚拟代理、安全代理、智能指引等)。 public class Subject { public virtal void Request () = 0; } public class RealSubject : pub...原创 2020-02-08 17:45:00 · 167 阅读 · 0 评论 -
《大话设计模式》装饰模式
装饰模式( Decorator) 是为已有功能动态地添加更多功能的一种方式,给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。[DP] Component是定义一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent 是定义了一个具体的对象,也可以给这个对象添加一些职责。 Decorator, 装饰抽象类,继承了Component,从外类来扩展...原创 2020-02-08 17:30:37 · 154 阅读 · 0 评论 -
《大话设计模式》设计原则
一、单一职责原则 单一职责原则(SRP), 就一个类而言,应该仅有一个引起它 变化的原因。 如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。 软件设计真正要做的许多内容,就是发现职责并把那些职责相互分离[ASD]。如果你能够想到多于一个的动机去改变一个类, ...原创 2020-02-05 18:08:32 · 140 阅读 · 0 评论 -
《大话设计模式》策略模式
策略模式是一种定义一系列算法的方法,从概念上来看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法类之间的耦合[DPE]。 策略模式就是用来封装算法的,可以用它来封装几乎任何类型的规则,只要在分析过程中听到需要在不同时间应用不同的业务规则,就可以考虑使用策略模式处理这种变化的可能性[DPE]。 策略模式的Strategy 类层次...原创 2020-02-02 18:56:59 · 248 阅读 · 0 评论 -
《大话设计模式》简单工厂模式与工厂模式
简单工厂模式属于创建型模式又叫做静态工厂方法模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。 简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。 摘自:https://www.jianshu.com/p/5cb52d84bd6d public class Operation { private: double numA; ...原创 2020-02-02 17:38:19 · 163 阅读 · 0 评论