Software Architecture & Engineering
55 篇笔记
- 5.6 迪米特法则historical
1. 什么是迪米特法则 不该知道的不要知道,一个类应该保持对其它对象最少的了解 2. 为什么需要迪米特法则 降低耦合度 3. 迪米特法则实现 从依赖者的角度来说,只依赖应该依赖的对象。 从被依赖者的角度说,只暴露应该暴露的方法。 4. 参考 - 迪米特法则——面向对象设计原则
- 5.7 合成复用原则historical
1. 什么是合成复用原则 尽量使用组合或者聚合关系实现代码复用,少使用继承 开闭原则在组合/聚合中的体现 2. 为什么需要合成复用原则 通过组合提高软件复用能力 3. 合成复用原则实现 将新对象作为原有对象的属性注入 4. 参考 - 合成复用原则——面向对象设计原则
- 5.8 OOP设计原则historical
1. 什么是面向对象设计原则 2. 为什么需要面向对象设计原则 提高代码的可维护性、可扩展性、可复用性 3. 面向对象设计原则分类 3.1. 开闭原则 开闭原则.md 3.2. 里氏替换原则 里氏替换原则.md 3.3. 合成复用原则 合成复用原则.md 3.4. 接口隔离原则 接口隔离原则.md
- 6.1 OOP设计模式historical
1. 什么是设计模式 - 针对某类问题,可复用的解决方案 2. 为什么需要设计模式 3. 设计模式分类 主要分成三类,创建型、结构型、行为型 3.1. 创建型 关注对象的创建 3.2. 结构型 关注类与类之间的组织方式 3.3. 行为型 关注对象之间的交互 4. 参考 - 什么是设计模式? \- 知
- 6.2 单例模式historical
一个类有且仅有一个实例对象 1. uml 2. Java 2.1. 饿汉式 - MySingleton - Client - 特点 - 会在加载类后一开始就被初始化,即使这个实例没有被使用到 2.2. 懒汉式:对整个方法加锁 - 特点 - 只有在真正用到的时候才会创建实例 - 每次调用都要加锁,但其
- 6.3 代理模式historical
1. 定义 不改变原有代码的基础上为类或者函数增加新功能。 我不想做跟我业务无关的东西 2. uml 3. Java 3.1. 静态代理 代理类在编译时生成,需要程序员自己手写 3.1.1. client 3.1.2. 代理 3.1.3. 被代理 3.2. 动态代理 代理类在运行时生成, 利用的ja
- 6.4 模板方法historical
1. 定义 适用于某个算法整体步骤固定,某些部分易变化.可以把变化的部分抽象出来.如servlet的doGet()和doPost()方法 2. uml 3. Java 3.1. client 3.2. 固定步骤 4. Golang 4.1. 第一种 4.1.1. client 4.1.2. 模板方法
- 6.5 工厂方法historical
相对于简单工厂有多个工厂类。我们可以传递具体工厂实例而不是具体的产品到子类中,当需要的时候再调用工厂实例的创建产品方法(等于把创建实例对象的时机延迟到子类中) 1. uml 2. Java 2.1. client 2.2. 工厂 2.3. 产品 3. Golang 3.1. 工厂 3.2. 产品 3
- 6.6 状态模式historical
1. 定义 根据状态的不同选用不同的处理逻辑,用if else太恶心 与策略模式的区别在于策略模式每种策略都是为了完成同一件事,而状态模式则是为了完成不同的事 2. UML 3. Java 3.1. client 3.2. context 3.3. 状态 4. Golang 4.1. 状态 4.2.
- 6.7 构建者模式historical
用于构建一个对象,这个对象由许多小对象组成,且流程复杂.如各种Builder. builder负责构建,director负责组装 1. uml 2. Java 2.1. client 2.2. 产品 2.3. 构造者 2.4. 装配者 3. Golang 3.1. client 3.2. 产品 3.