系统设计的核心思想:可维护性、可复用性;
设计模式终究是一种思想,最终目标是提高我们系统的可维护性以及复用性;
在系统设计中,有几大原则:
- 开-闭原则(OCP);对扩展开放,对修改关闭。通过扩展已有的软件系统,可提供新的行为,以满足对软件新的需求。已有软件模块特别是抽象层模块不能再修改,来保证系统的稳定性、延续性; 如何实现开闭原则--> 抽象化是关键,对可变性进行封装
- 里氏代换原则;任何基类出现的地方,子类一定可以出现;
- 合成/聚合复用原则;要尽量使用合成/聚合,而不是通过继承关系达到复用的目地;要求使用继承关系时,必须确定这个关系是符合一定条件的。在一个新的对象里面使用一些已有的对象,使之成为新对象的一部分,新的对象通过向这些对象的委派达到复用已有功能的目的。
- 依赖倒转原则;但要依赖于抽象,不要依赖于实现;
- 接口隔离原则;应当提供尽可能小的单独的接口,而不要提供大的总接口;
抽象类
抽象类通过代表是一个抽象的概念,它提供一个继承的出发点。由于抽象类不能实例化,因此它一定是用来继承的,而具体类不是用来继承的。
抽象类应当拥有尽可能多的共同代码;应当拥有尽可能少的数据;
设计模式
- 单例模式 特点:构造方法私有、只有一个实例,由本类自提供;在项目中使用场景如:配置信息、主键生成器;
- 简单工厂 特点:静态工厂方法模式,提供一个静态方法,根据传入的不同类型提供不同的实现类;
- 策略模式 特点:属于对象的行为模式,针对一组算法,将每一个算法封闭到具有菜同接口的独立的类中,从而使得它们可以相互替换。缺点:客户端得了解所有的策略并分别知道策略的不同。我们的逾期计算中新老合同算逾期金额时就可以使用策略模式;
- 适配器模式 特点:将一个类的接口变换成客户端所期待的另一种接口,通过继承或依赖现有实现。我们在重构项目中,有一套老还款,我们又重构了还款功能,所有的表结构都不一样,这时候我们就用到了策略模式,使两套还款功能套跑,保留了老老还款功能,兼容了新还款。
- 代理模式 特点:一个类代理另外一个类的功能;
- 命令模式 特点:请求以命令的形式包裹到对象中,并传给调用对象;一组命令包裹到对象中。