摘要: 总结 GOF定义? 将一个类的接口转换成client希望的另一个接口. Adapter模式使得原本由于接口不兼容, 而不能一起工作的那些class可以一起工作. 使用场景? 最常见的是, 遗留代码复用 , 代码迁移. (它们常常有这样的潜规则: 你不更改旧模块,保持它们的编译/测试稳定性) 由于环境 阅读全文
posted @ 2023-11-26 05:43 qwertzxc 阅读(25) 评论(0) 推荐(0)
摘要: 总结 什么情况下用代理模式? 出于某种原因(创建对象开销/安全控制/跨进程访问...), 直接访问会造成很多麻烦, 这时需要增加间接层,使用代理模式. GOF定义 为其他对象提供一种代理以控制(隔离, 使用接口)对这个对象的访问. (重点是控制该对象的访问) 具体做法? 创建一个类, 让这个类充当其 阅读全文
posted @ 2023-11-26 05:33 qwertzxc 阅读(15) 评论(0) 推荐(0)
摘要: 总结 facade模式有什么用? 解耦Client和subSystem. 怎么做到的"解耦Client和subSystem"? 在Client和subSystem中间加一个facade层, facade层负责提供一个统一稳定的交互接口. (这就做到了, 无论subSystem怎么变, facede不 阅读全文
posted @ 2023-11-26 05:32 qwertzxc 阅读(18) 评论(0) 推荐(0)
摘要: 总结 干什么用的? 避免了创建大量相似对象, 减少了内存占用. (可以简单理解为一个对象池) 细节 把实例的共享状态和非共享状态分开. (画图工具例子中的颜色是共享的, X Y 半径是非共享的) 场景 String常量池 数据库连接池 缓冲池 文字编辑器 图形应用 游戏开发 java例子1 重构前 阅读全文
posted @ 2023-11-25 04:50 qwertzxc 阅读(2) 评论(0) 推荐(0)
摘要: 总结 场景 资源分享(数据库) 配置管理 日志管理 对象工厂 c++例子 经典的magic static版本 (c++11之后才支持) (这个版本是线程安全的, 原因是其他线程会等到第一个线程完成instance的构建) 更多参考: https://zhuanlan.zhihu.com/p/3447 阅读全文
posted @ 2023-11-25 02:21 qwertzxc 阅读(15) 评论(0) 推荐(0)
摘要: 总结 创建具有不同配置的对象时, 可以使用Buildr模式. 多步骤构建复杂的对象. 可以避免构造方法的参数列表过长. 在链式调用中创建对象. 将创建对象和使用对象分离, 严格遵循单一职责原则. java例子 package v11_builder.java; class Milktea { dou 阅读全文
posted @ 2023-10-25 12:58 qwertzxc 阅读(12) 评论(0) 推荐(0)
摘要: 总结 定义 在软件系统中, 有时候需要多次创建某一类型的对象, 为了简化创建过程, 可以只创建一个对象, 然后再通过克隆的方式复制出多个相同的对象, 这就是原型模式的设计思想. 干什么用的? 主要解决对象复制的问题, 它的核心就是 Clone() 方法, 返回原型对象的复制品。 和工厂模式的相似点? 阅读全文
posted @ 2023-10-25 09:49 qwertzxc 阅读(8) 评论(0) 推荐(0)
摘要: 总结 解决什么问题? 用工厂模式解决"一系列相互依赖的对象"的创建问题, 就用抽象工厂模式(感觉叫家族工厂模式更贴切) . 如果没有应对"多系列对象构建"的需求变化, 则没有必要使用抽象工厂, 这时候使用简单的工厂就可以. "系列对象"是什么意思? "系列对象"指的是在某一特定系列下的对象之间有相互 阅读全文
posted @ 2023-10-24 01:53 qwertzxc 阅读(8) 评论(0) 推荐(0)
摘要: 总结 为什么需要工厂方法模式? 直接使用new会导致紧耦合, 所以需要一种创建对象的办法, 让代码保持开闭原则. (用来替代直接NEW的) 如何做到的"替代直接NEW"? 工厂方法模式可以将创建行为延迟倒到子类, 从而实现一种扩展(而非更改)的策略, 较好地解决了这种紧耦合关系。 缺点? 工厂模式解 阅读全文
posted @ 2023-10-24 00:36 qwertzxc 阅读(9) 评论(0) 推荐(0)
摘要: 总结 一个类不应该依赖它不需要的接口. 拆分庞大的接口为多个小接口, 避免class依赖不必要的功能。 不要将一个大而全的接口扔给使用者, 而是将每个使用者关注的接口进行隔离。 如果客户依赖了不需要的接口, 就要面临不需要接口变动带来的风险. (低耦合) 类之间的依赖应该建立在最小接口上面, 把没有 阅读全文
posted @ 2023-10-22 03:31 qwertzxc 阅读(6) 评论(0) 推荐(0)