系统设计
优秀的软件架构
代码复用
无论是开发哪种软件产品,成本和时间都是最重要的。
代码复用是减少开发成本最常用的方式之一,其目的非常明显,即:与其反复从头开发,不如在新对象中重用已有的代码。
扩展性
需求变化是程序员生命中唯一不变的事情。
如何正确使用设计模式?
设计模式不是为了特定场景而生的,而是为了让大家可以更好和更快地开发。
七大设计原则
- 开闭原则:对扩展开放,对修改关闭。降低维护带来的新风险。
- 依赖倒置原则:高层不应该依赖低层,要面向接口编程。更利于代码结构的升级扩展。
- 单一职责原则:一个类只干一件事,实现类要单一。便于理解,提高代码的可读性。
- 接口隔离原则:一个接口只干一件事,接口要精简单一。功能解耦,高聚合、低耦合
- 迪米特法则:不该知道的不要知道,一个类应该保持对其它对象最少的了解,降低耦合度。只和朋友交流,不和陌生人说话,减少代码臃肿。
- 里氏替换原则:不要破坏继承体系,子类重写方法功能发生改变,不应该影响父类方法的含义。防止继承泛滥。
- 合成复用原则:尽量使用组合或者聚合关系实现代码复用,少使用继承。降低代码耦合。
这些原则的目的只有一个:降低对象之间的耦合,增加程序的可复用性、可扩展性和可维护性。
低耦合高内聚:内紧外松,坚信模块能完成它的任务。
创建型模式
创建型模式的主要关注点是“怎样创建对象?”,它的主要特点是“将对象的创建与使用分离”。这样可以降低系统的耦合度,使用者不需要关注对象的创建细节,对象的创建由相关的工厂来完成。就像我们去商场购买商品时,不需要知道商品是怎么生产出来一样,因为它们由专门的厂商生产。
单例模式:
某个类只能生成一个实例,该类提供了一个全局访问点供外部获取该实例,其拓展是有限多例模式
例子:Windows 中只能打开一个任务管理器,这样可以避免因打开多个任务管理器窗口而造成内存资源的浪费,或出现各个窗口显示内容的不一致等错误。
关键:构造方法为私有。
懒汉式创建:不着急创建对象,在需要的时候创建。
饿汉式创建:系统初始化的时候就创建对象。
UML:
原型模式:
将一个对象作为原型,通过对其进行复制而克隆出多个和原型类似的新实例。
工厂方法模式:
定义一个用于创建产品的接口,由子类决定生产什么产品
抽象工厂模式:
提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品
建造者模式:
将一个复杂对象分解成多个相对简单的部分,然后根据不同需要分别创建它们,最后构建成该复杂对象。