
设计模式
Felix_hyfy
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
设计模式笔记—23_Interpreter解析器模式
文章目录Interpreter解析器模式是一种“领域规则”模式动机定义结构代码对比main.cpp说明要点总结Interpreter解析器模式是一种“领域规则”模式在特定领域中,某些变化虽然频繁,但可以抽象为某种规则。这时候,结合特定领域,将问题抽象为语法规则,从而给出在该领域下的一般性解决方案动机在软件构建过程中,如果某一特定领域的问题比较复杂,类似的结构在不断重复出现,如果使用普...原创 2020-03-04 18:03:43 · 402 阅读 · 0 评论 -
设计模式笔记—22_Visitor访问器模式
文章目录Visitor访问器模式是一种“行为变化”模式动机定义结构代码对比visitor1.cppvisitor2.cpp对比要点总结Visitor访问器模式是一种“行为变化”模式在组件的构建过程中,组件行为的变化经常导致组件本身剧烈的变化。“行为变化”模式将组件的行为和组件本身进行解耦,从而支持组件行为的变化,实现两者之间的松耦合动机在软件构建过程中,由于需求的改变,某些类层次结构...原创 2020-03-04 17:26:34 · 306 阅读 · 0 评论 -
设计模式笔记—21_Command命令模式
文章目录Command命令模式是一种“行为变化”模式动机定义结构代码对比command.cpp对比要点总结Command命令模式是一种“行为变化”模式在组件的构建过程中,组件行为的变化经常导致组件本身剧烈的变化。“行为变化”模式将组件的行为和组件本身进行解耦,从而支持组件行为的变化,实现两者之间的松耦合动机在软件构建过程中,“行为请求者”与“行为实现者”通常呈现出一种“紧耦合”。但在...原创 2020-03-04 16:24:29 · 202 阅读 · 0 评论 -
设计模式笔记—20_ChainOfResponsibility职责链模式
文章目录Chain of Responsibility是一种“数据结构”模式动机定义结构代码对比chainofresponsibility.cpp要点总结Chain of Responsibility是一种“数据结构”模式常常有一些组件在内部具有稳定的数据结构。如果让客户程序依赖这些特定的数据结构,将极大地破坏组件的复用。这时候,将这些特定的数据结构封装在内部,在外部提供统一的接口,来实现与...原创 2020-03-04 15:54:51 · 196 阅读 · 0 评论 -
设计模式笔记—19_Iterator迭代器模式
文章目录Iterator迭代器模式是一种“数据结构”模式动机定义结构代码对比iterator.cpp要点总结Iterator迭代器模式是一种“数据结构”模式常常有一些组件在内部具有特定的数据结构。如果让客户程序依赖这些特定的数据结构,将极大地破坏组件的复用。这时候,将这些特定数据结构封装在内部,在外部提供统一的接口,来实现与特定数据结构无关的访问,是一种行之有效的解决方案动机在软件构...原创 2020-03-04 15:14:09 · 179 阅读 · 0 评论 -
设计模式笔记—18_Composite组合模式
Composite组合模式是一种“数据结构”模式常常有一些组件在内部具有特定的数据结构。如果让客户程序依赖这些特定的数据结构,将极大地破坏组件的复用。这时候,将这些特定数据结构封装在内部,在外部提供统一的接口,来实现与特定数据结构无关的访问,是一种行之有效的解决方案动机软件在某些情况下, 客户代码过多地依赖于对象容器复杂地内部实现结构。对象容器内部实现结构(而非抽象接口)的变化将引起客...原创 2020-03-04 14:45:31 · 435 阅读 · 0 评论 -
设计模式笔记—17_Memento备忘录模式
Memento备忘录模式是一种“状态变化”模式在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?“状态变化”模式为这一问题提供了一种解决方案动机在软件构建过程中,某些对象的状态在转换过程中,可能由于某种需要,要求程序能够回溯到对象之前处于某个点时的状态。如果使用一些公有接口来让其他对象得到对象的状态,便会暴露对象的细节实现如何实现对...原创 2020-03-04 14:02:54 · 235 阅读 · 0 评论 -
设计模式笔记—16_State状态模式
文章目录State状态模式是一种“状态变化”模式动机定义结构代码对比state1.cppstate2.cpp对比要点总结State状态模式是一种“状态变化”模式在组件构建过程中,某些对象的状态经常面临变化,如何对这些变化进行有效的管理?同时又维持高层模块的稳定?“状态变化”模式为这一问题提供了一种解决方案动机在软件构建过程中,某些对象的状态如果改变,其行为也会随之而发生变化。比如文档...原创 2020-03-03 21:58:53 · 229 阅读 · 0 评论 -
设计模式笔记—15_Mediator中介者模式
文章目录Mediator中介者模式是一种“接口隔离”模式动机定义结构要点总结Mediator中介者模式是一种“接口隔离”模式在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题、甚至根本无法实现。采用添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案动机在软件构建过程中,经常会出现多个对象互相关联交互的情况,对象之间常常会维持一种复杂的引用关系,如果遇到...原创 2020-03-03 21:21:35 · 205 阅读 · 0 评论 -
设计模式笔记—14_Adapter适配器模式
文章目录Adapter适配器模式是一种“接口隔离”模式动机定义结构代码对比Adapter.cpp对比要点总结Adapter适配器模式是一种“接口隔离”模式在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题,甚至根本无法实现。采用添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案动机在软件系统中,由于应用环境的变化,常常需要将“一些现存的对象”放在新的环...原创 2020-03-03 20:40:29 · 186 阅读 · 0 评论 -
设计模式笔记—13_Proxy代理模式
文章目录Proxy代理模式是一种“接口隔离”模式动机定义结构代码对比未使用代理模式Client.cppProxy.cpp对比要点总结Proxy代理模式是一种“接口隔离”模式在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题、甚至根本无法实现。采用一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案动机在面向对象系统中,有些对象由于某种原因(比如对象创建的开销...原创 2020-03-03 20:07:02 · 202 阅读 · 0 评论 -
设计模式笔记—12_Facade门面模式
文章目录Facade门面模式是一种“接口隔离”模式系统间耦合的复杂度动机定义结构要点总结Facade门面模式是一种“接口隔离”模式在组件构建过程中,某些接口之间直接的依赖常常会带来很多问题,甚至根本无法实现。采用添加一层间接(稳定)接口,来隔离本来互相紧密关联的接口是一种常见的解决方案系统间耦合的复杂度动机上述A方案的问题在于组件的客户和组件中各种复杂的子系统有了过多的耦合,随着...原创 2020-03-03 19:38:48 · 212 阅读 · 0 评论 -
设计模式笔记—11_Flyweight享元模式
文章目录Flyweight享元模式是一种“对象性能”模式动机定义结构代码对比flyweight.cpp对比要点总结Flyweight享元模式是一种“对象性能”模式面向对象很好地解决了“抽象”的问题,但是必不可免地要付出一定的代价。对于通常情况来说,面向对象的成本大都可以忽略不计。但是某些情况,面向对象所带来的成本必须谨慎处理动机在软件系统采用纯粹对象方案的问题在于大量细粒度的对象会很...原创 2020-03-03 18:09:40 · 305 阅读 · 0 评论 -
设计模式笔记—10_Singleton单件模式
文章目录Singleton单件模式是一种“对象性能”模式动机定义结构代码对比Singleton.cpp对比要点总结Singleton单件模式是一种“对象性能”模式面向对象很好地解决了“抽象”的问题,但是必不可免地要付出一定的代价。对于通常情况来说,面向对象的成本大都可以忽略不计。但是某些情况,面向对象所带来的成本必须谨慎处理动机在软件系统中,经常有这样一些特殊的类,必须保证它们在系统...原创 2020-03-03 17:40:44 · 259 阅读 · 0 评论 -
设计模式笔记—9_Builder构造器模式
文章目录Builder构建器是一种“对象创建”模式动机定义结构代码对比builder.cpp对比要点Builder构建器是一种“对象创建”模式通过“对象创建”模式绕开new,来避免对象创建(new)的过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽象之后的第一步工作动机在软件系统中,有时候面临着“一个复杂对象”的创建工作,其通常由各个部分的子对象用一定的算法构成...原创 2020-03-03 16:57:36 · 398 阅读 · 0 评论 -
设计模式笔记—8_Prototype原型模式
文章目录Prototype原型模式是一种“对象创建”模式动机定义结构代码对比Prototype.cpp原型基类ConcretePrototype.cpp原型具体类Client.cpp客户端程序对比要点总结Prototype原型模式是一种“对象创建”模式通过“对象创建”绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽象之后的第一步工作...原创 2020-03-03 16:20:02 · 196 阅读 · 0 评论 -
设计模式笔记—7_AbstractFactory抽象工厂模式
文章目录Abstract Factory抽象工厂模式是一种“对象创建”模式动机定义结构代码对比EmployeeDAO1.cppEmployeeDAO2.cppEmployeeDAO3.cpp对比要点总结Abstract Factory抽象工厂模式是一种“对象创建”模式通过“对象创建”模式绕开new,来避免对象创建(new)过程中所导致的紧耦合(依赖具体类),从而支持对象创建的稳定。它是接口抽...原创 2020-03-03 15:50:13 · 260 阅读 · 0 评论 -
设计模式笔记—6_FactoryMethod工厂方法
文章目录Factory Method工厂方法是一种“对象创建”模式动机定义结构代码对比未使用FactoryMethodFileSplitter1.cppMainForm1.cppFactoryMethodISplitterFactory.cppFileSplitter2.cppMainForm2.cpp对比要点总结Factory Method工厂方法是一种“对象创建”模式通过“对象创建”模式...原创 2020-03-02 21:18:46 · 199 阅读 · 0 评论 -
设计模式笔记—5_Bridge桥模式
文章目录Bridge桥模式是一种“单一职责”模式动机定义结构代码对比bridge1.cpp未使用桥模式bridge2.cpp桥模式对比要点总结Bridge桥模式是一种“单一职责”模式在软件组件的设计中,如果责任划分得不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥者大量重复代码。这时候的关键是划清责任动机由于某些类型的固有的实现逻辑,使得它们具有两个变化的维度,...原创 2020-03-02 20:07:35 · 220 阅读 · 0 评论 -
设计模式笔记—4_Decorator装饰者模式
Decorator装饰者模式是一种“单一职责”模式在软件组件的设计中,如果责任划分得不清晰,使用继承得到的结果往往是随着需求的变化,子类急剧膨胀,同时充斥着重复代码。这时候的关键是划清责任动机在某些情况下我们可能会“过度地使用继承来扩展对象的功能”。由于继承为类型引入的静态特质(通过继承实现,而动态特质可以通过组合实现),使得这种扩展方式缺乏灵活性;并且随着子类的增多(扩展功能的增多)...原创 2020-03-02 18:57:44 · 191 阅读 · 0 评论 -
设计模式笔记—3_Observer观察者模式
文章目录Observer / Event模式是一种“组件协作”模式动机定义结构代码对比没有使用Observer模式FileSplitter1.cppMainForm1.cppObserver模式FileSplitter2.cppMainForm2.cpp对比要点总结Observer / Event模式是一种“组件协作”模式现代软件专业分工之后的第一个结果就是“框架与应用程序的划分”,“组件协...原创 2020-03-02 17:26:39 · 160 阅读 · 0 评论 -
设计模式笔记—2_Strategy策略模式
文章目录Strategy策略模式是一种“组件协作”模式动机定义结构代码对比没有使用策略模式strategy1.cpp策略模式strategy2.cpp要点总结Strategy策略模式是一种“组件协作”模式“组件协作”模式通过晚期绑定,来实现框架与应用程序之间的松耦合,是二者之间协作时常用的模式动机在软件构建过程中,某些对象使用的算法可能多种多样,经常改变,如果将这些算法都编码到对象中...原创 2020-03-02 15:46:55 · 193 阅读 · 0 评论 -
设计模式笔记—1_TemplateMethod
文章目录GOF-23模式分类从目的看从范围看从封装变化角度对模式分类组件协作单一职责对象创建对象性能接口隔离状态变化数据结构行为变化领域问题重构获得模式 Refactoring to Patterns重构关键技法组件协作模式Template Method动机定义代码对比结构化软件设计流程Library开发库template1_lib.cppApplication应用程序开发template1_ap...原创 2020-03-02 14:39:08 · 235 阅读 · 0 评论 -
设计模式笔记—0_设计模式简介+面向对象设计原则
文章目录深入理解面向对象机制向下:深入理解三大面向对象机制向上:深刻把握面向对象机制所带来的抽象意义,理解如何使用这些机制来表达显示世界,掌握什么时“好的面向对象设计”软件设计复杂的根本原因:变化如何解决复杂性分解抽象软件设计的目标:复用重新认识面向对象理解隔离变化各司其职对象是什么?面向对象设计原则依赖倒置原则(DIP)开放封闭原则(OCP)单一职责原则(SRP)Liskov替换原则(LSP)接...原创 2020-03-02 14:38:17 · 613 阅读 · 0 评论