摘要: 总结 里氏替换原则的场景和作用? what 是实现抽象化的一种规范 . when 在为已存在的class进行扩展, 来创建一个新的子类时. . how 里氏替换原则, 对子类进行了约束. . why 符合里氏替换原则的扩展, 不会给已有的系统引入新的错误. 约束一 子类可以扩展父类的功能, 但不能改 阅读全文
posted @ 2023-10-22 03:31 qwertzxc 阅读(20) 评论(0) 推荐(0)
摘要: 总结 什么是聚合 / 组合 / 继承? 比较一下耦合程度? 继承的耦合度, 高于聚合/组合 父类的任何变化,都会导致子类的实现发生变化. . 继承(白箱复用), 把所有的实现细节暴露给子类. . 组合/聚合(黑箱复用), 无法获取到class以外的对象的实现细节. 优先用聚合组合, 还是优先用继承? 阅读全文
posted @ 2023-10-22 03:30 qwertzxc 阅读(8) 评论(0) 推荐(0)
摘要: 总结 具体类不要发生直接的依赖关系, 应该通过接口层进行联系. 抽象层不要依赖低层, 要反过来, 低层依赖抽象层 高层模块不要直接依赖低层, 而要依赖中间的抽象层. 抽象层的稳定性, 要高于具体模块的稳定性 JAVA例子 参考 https://youtu.be/3uA1TvGRRi8?si=ycOt 阅读全文
posted @ 2023-10-22 03:30 qwertzxc 阅读(13) 评论(0) 推荐(0)
摘要: 总结 出现新需求时, 在不修改源代码的基础上, 扩展我们的组件. 当出现新的需求, 不得不对工程进行改动, 此时我们尽量用"扩展"的方式来满足需求(可以理解为添加新模块), 而不是通过改动程序实现. (修改旧的模块, 侵入式的) 用抽象构建框架,用实现扩展细节. 参数和对象尽量使用接口或抽象类. 遵 阅读全文
posted @ 2023-10-22 03:30 qwertzxc 阅读(6) 评论(0) 推荐(0)
摘要: 总结 任何一个软件模块, 都应该只对某一类行为者负责. ( 一个接口/抽象类 < > 一个职责 ) 一个接口只承担一个职能. . 换个说法: 一个class应该仅有一个引起它变化的原因. (变化的方向隐含着类的责任) . 负责前台收银的服务员, 就不要去餐厅收盘子。 负责餐厅收盘子的就不要去做汉堡。 阅读全文
posted @ 2023-10-22 03:30 qwertzxc 阅读(6) 评论(0) 推荐(0)
摘要: 总结 迪米特原则的目的? 降低class之间的耦合性, 提高模块的独立性, 减少A类对B类的依赖. 要点1 只和直接朋友通信, 不要和陌生人讲话. 要点2 减少对朋友的了解 (减少暴露的方法) 典型的反面例子 objectA.getObjB().doSomething(); objectA.getO 阅读全文
posted @ 2023-10-22 03:30 qwertzxc 阅读(39) 评论(0) 推荐(0)
摘要: 总结 what 有什么用? 解决主类在多个方向的扩展功能的问题 when 什么场景用? 扩展功能时用 (添加新功能/可选功能) how 如何做? 在运行时动态扩展对象的功能, 而非在编译时静态的扩展. 李建忠老师的一些讲解 . 通过采用组合而非继承的手法, Decorator模式实现了, 在运行时动 阅读全文
posted @ 2023-10-15 21:00 qwertzxc 阅读(8) 评论(0) 推荐(0)
摘要: 总结 一些李建忠的讲解 Bridge模式有时候类似于多继承方案, 但是多继承方案往往违背"单一职责原则(即一个类只有一个变化的原因)",复用性比较差. Bridge模式是比多继承方案更好的解决方法. . 当具有多个变化的维度, 随着需求的变化,子类急剧膨胀, 同时充斥着重复代码,这时候的关键是划清责 阅读全文
posted @ 2023-10-15 20:59 qwertzxc 阅读(15) 评论(0) 推荐(0)
摘要: 总结 核心是抽象的通知依赖关系 定义对象间的一种一对多(变化)的依赖关系, 以便当一个对象(Subject)的状态发生改变时, 所有依赖于它的对象都得到通知并自动更新 使用面向对象的抽象, Observer模式使得我们可以独立地改变目标与观察者, 从而使二者之间的依赖关系达致松耦合。 目标发送通知时 阅读全文
posted @ 2023-10-12 16:41 qwertzxc 阅读(19) 评论(0) 推荐(0)
摘要: 总结 用扩展的方式来支持未来的变化. 定义一组算法, 把它们一个个封装起来, 并且使它们可互相替换(变化), 使得算法可独立于使用它的客户端(稳定)而变化(扩展/子类化). 该模式提供了if else以外的另一种选择, 消除条件判断语句,就是在解耦合. 含有许多条件判断语句的代码, 通常都需要Str 阅读全文
posted @ 2023-10-12 15:16 qwertzxc 阅读(12) 评论(0) 推荐(0)