设计模式
~青萍之末~
弱者总有弱者的理由
展开
-
接口隔离模式之适配器模式(Adapter)
文章目录一、概念二、动机三、适配器模式四、类图结构五、要点总结一、概念 将一个类的接口转换成客户希望的另一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。—《设计模式》Gof二、动机 在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环境中应用,但是新环境要求的接口是这些现存对象所不满足的。 如何应对这种“迁移的变化”?如何既...转载 2019-12-24 19:32:18 · 734 阅读 · 0 评论 -
接口隔离模式之代理模式(Proxy)
文章目录一、概念二、动机三、源代码讲解四、使用代理模式进行改进五、类图结构六、要点总结一、概念 为其他对象提供一种代理以控制(隔离,使用接口)对这个对象的访问。—《设计模式》Gof二、动机 在面向对象系统中,有些对象由于某种原因(比如对象创建开销很大或者某些操作需要安全控制或者需要进程外访问等),直接访问会给使用者、或者系统结构带来很多的麻烦。 如何在不失去透明操作对象的同时来管理...转载 2019-12-24 17:24:54 · 884 阅读 · 0 评论 -
对象性能模式之单例模式(Singleton)
文章目录一、概念二、动机三、单例模式的实现四、类图结构五、要点总结一、概念 保证一个类仅有一个实例,并提供一个该实例的全局访问点。—《设计模式》GoF二、动机 在软件系统中,经常有这样一个特殊的类,必须保证它们在系统中只存在一个示例,才能确保他们的逻辑正确性、以及良好的效率。如何绕过常规的构造器,提供一种机制来保证一个类只有一个实例?工厂模式绕过new是为了避开紧耦合,单例模式避开ne...转载 2019-12-24 17:10:10 · 585 阅读 · 0 评论 -
对象创建模式之抽象工厂模式(Abstract Factory)
文章目录一、概念二、动机三、源代码讲解四、使用抽象工厂模式进行改进五、类图结构六、要点总结一、概念 提供一个接口,让该接口负责创建一系列“相关或相互依赖的对象”,无需指定它们具体的类。 —《设计模式》Gof二、动机 在软件系统中,经常面临着“一系列相互依赖的对象”的创建工作;同时,由于需求的变化,往往存在更多系列对象的创建工作。 如何应对这种变化?如何绕过常规的对象创建方法(new...转载 2019-12-24 16:59:22 · 660 阅读 · 0 评论 -
对象创建模式之工厂方法模式(Factory Method)
文章目录一、概念二、动机三、源代码讲解四、使用工厂方法模式进行改进五、类图结构六、要点总结一、概念 定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类。 —《设计模式》Gof二、动机 在软件系统中,经常面临这创建对象的工作;由于需求的变化,需要创建的对象的具体类型经常变化。 如何应对这种变化?如...转载 2019-12-24 16:47:13 · 587 阅读 · 0 评论 -
单一职责模式之桥模式(Bridge)
文章目录一、概念二、动机三、源代码讲解四、使用桥模式进行改进五、类图结构六、要点总结一、概念 将抽象部分(业务功能)与实现部分(平台实现)分离,使它们都可以独立地变化。 ——《设计模式》GoF二、动机 由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,乃至多个维度的变化。 如何应对这种“多维度的变化”?如何利用面向对象技术来使得类型可以轻松地沿着两个乃至多个方向变化,而不引...转载 2019-12-24 16:35:50 · 569 阅读 · 0 评论 -
单一职责模式之装饰模式(Decorator)
文章目录一、概念二、动机三、源代码讲解四、使用模板方法进行改进五、类图结构六、要点总结七、应用场景一、概念 动态(组合)地给一个对象增加一些额外的职责。就增加功能而言,Decorator模式比生成子类(继承)更为灵活(消除重复代码 & 减少子类个数)。——《设计模式》GoF二、动机 在某些情况下我们可能会“过度的使用继承来扩展对象的功能”,由于继承为类型引入的静态特质,使得这种...转载 2019-12-24 11:11:53 · 492 阅读 · 0 评论 -
组件协作模式之观察者模式(Observer)
文章目录一、概念二、动机三、源代码讲解四、使用观察者模式进行改进五、类图结构六、要点总结一、概念 定义对象间的一种一对多(变化)的依赖关系,以便当一个对象(Subject)的状态发生改变时,所有依赖于它的对象都得到通知并自动更新。——《设计模式》GOF二、动机 在软件构建过程中,我们需要为某些对象建立一种“通知依赖关系”,一个对象(目标对象)的状态发生改变,所有的依赖对象(观察者对象)...转载 2019-12-22 17:14:17 · 535 阅读 · 0 评论 -
组件协作模式之策略模式(Strategy)
文章目录一、概念二、动机三、源代码讲解四、使用策略模式进行改进五、类图结构六、要点总结一、概念 定义一系列算法,把他们一个个封装起来,并且使他们可以互相替换(变化<各个算法>)。该模式使得算法可独立于使用它的客户程序(稳定<SalesOrder类>)而变化(扩展,子类化)。——《设计模式》GOF二、动机 在软件构建过程中,某些对象可能用到的算法多种多样,经常改变...转载 2019-12-22 16:56:07 · 587 阅读 · 0 评论 -
组件协作模式之模板方法模式(Tempalte Method)
文章目录一、概念二、动机三、源代码讲解四、使用模板方法进行改进五、类图结构六、要点总结七、应用场景一、概念 定义一个操作中的算法的骨架(稳定),而将一些步骤延迟定义一个虚函数,让子类去实现(重写)这个虚函数>(变化)到子类<支持子类来变化,我现在定不下来如何实现,让子类来实现>中。Template Method使得子类可以不改变(复用)一个算法的结构即可重定义(overri...转载 2019-12-22 16:43:17 · 204 阅读 · 0 评论 -
设计模式与面向对象设计原则
文章目录一、分解与抽象1、分解-分而治之2、抽象-面向对象二、设计模式基本原则1、依赖倒置原则(DIP)2、开放封闭原则(OCP)3、单一职责原则(SRP)4、里氏替换原则(LSP)5、接口隔离原则(ISP)6、优先使用对象组合,而不是类继承7、封装变化点8、针对接口编程,而不是针对实现编程 使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性,设计模式使代码编制真正工程化。...转载 2019-11-25 21:54:14 · 385 阅读 · 0 评论