摘要: 心得 为什么会出现设计模式? 为了应对需求的频繁变化 设计模式的真谛? 让程序在编译时一样, 将变化转移到运行时. 不要通过修改旧代码, 来支持变化的新需求, 而是通过运行时多态, 来支持变化的新需求. 使用设计模式的核心问题? 确定什么时候什么地方应用设计模式. 答案是, 寻找变化点, 在变化点处 阅读全文
posted @ 2023-12-12 01:50 qwertzxc 阅读(5) 评论(0) 推荐(0)
摘要: 总结 java例子 c++例子 阅读全文
posted @ 2023-12-09 02:49 qwertzxc 阅读(2) 评论(0) 推荐(0)
摘要: 总结 为什么需要访问器模式? 在软件构建过程中, 有些需求的变化, 会导致类层次结构需要添加某些新的行为, 进而导致源代码的更改, 这违背了开闭原则. 如何在不改源码的前提下,在运行时添加新行为,避免上述问题? 使用visitor模式 (将编译时扩展行为向后延迟,转化为运行时扩展行为) GOF定义? 阅读全文
posted @ 2023-12-09 02:48 qwertzxc 阅读(11) 评论(0) 推荐(0)
摘要: 总结 GOF定义? 将一个请求(行为)封装为一个对象, 从而使你可用不同的请求对客户进行参数化操作. 比如请求排队, 记录请求日志, 撤销... (请求一旦变成对象就具有了很高的灵活度) 该模式的目的是什么? 解耦 Invoker请求方 和 Receiver行为实现者 (RemoteControl 阅读全文
posted @ 2023-12-09 02:46 qwertzxc 阅读(17) 评论(0) 推荐(0)
摘要: 总结 GOF定义? 使多个对象都有机会处理请求, 从而避免请求的发送者和接收者(handler)之间的耦合关系。 将这些对象连成一条链,(链表) 并沿着这条链传递请求, 直到有一个对象处理它为止. . 运行时再确定哪一个handler可以处理这个request. . 过程像踢皮球一样. 解耦谁? 将 阅读全文
posted @ 2023-12-04 21:09 qwertzxc 阅读(19) 评论(0) 推荐(0)
摘要: 总结 GOF定义? 提供一种方法顺序访问一个聚合对象中的各个元素, 而又不暴露(稳定)该对象的内部表示(隔离变化). . 提供一种遍历集合元素的方法, 而不暴露集合的内部表示. 可以实现对集合的操作, 而不关心底层的实现细节. 为什么C++中不用OOP的方式实现迭代器? (STL) 虚函数调用有性能 阅读全文
posted @ 2023-12-04 21:07 qwertzxc 阅读(4) 评论(0) 推荐(0)
摘要: 总结 为什么需要组合模式? 在软件在某些情况下, 客户代码过多地依赖于对象容器复杂的内部实现结构, 对象容器内部实现结构(而非抽象接口)的变化, 将引起客户代码的频繁变化, 带来了代码的维护性、扩展性等弊端. 所以我们要将"客户代码与复杂的对象容器结构"解耦. 如何将"客户代码与复杂的对象容器结构" 阅读全文
posted @ 2023-12-04 21:06 qwertzxc 阅读(12) 评论(0) 推荐(0)
摘要: 总结 GOF定义? 允许一个对象, 在内部状态改变时, 改变它的行为, 从而使对象看起来似乎修改了其行为. 优点? 状态转换的逻辑被分离, 状态行为被分离, 每一个状态都是一个单独的类, 更容易添加新的状态, 或者修改状态转换的逻辑. . 同时消除了ifelse, 状态转换的逻辑更加清晰, 更加易于 阅读全文
posted @ 2023-12-02 10:38 qwertzxc 阅读(18) 评论(0) 推荐(0)
摘要: 总结 有什么用? 在不破坏对象封装性的前提下, 保存或恢复对象的内部状态. (在对象之外进行保存) 核心 Memento模式的核心是信息隐藏, 即Originator需要向外接隐藏息, 保持其封装性. 但同时又需要将状态保持到外界(Memento) memento模式的进化 由于现代语言运行时 (如 阅读全文
posted @ 2023-12-02 10:37 qwertzxc 阅读(7) 评论(0) 推荐(0)
摘要: 总结 GOF定义? 用一个中介对象来封装(封装变化)一系列的对象交互. 中介者使各对象不需要显式的相互引用(编译时依赖→运行时依赖), 从而使其耦合松散(管理变化), 而且可以独立地改变它们之间的交互. . . . . 中介者模式的作用? 可以有效简化对象之间的关系, 降低模块耦合性. 中介者模式是 阅读全文
posted @ 2023-11-26 05:46 qwertzxc 阅读(12) 评论(0) 推荐(0)