软件开发流程:需求文档、概要设计文档、详细合计文档、编码和测试、安装和调试、维护升级
一、常用设计原则
1.开闭原则:对扩展开放,对修改关闭,易于维护和升级(eg:类的继承)
2.里氏代换原则:任何基类可出现的地方,子类一定可以出现,多用多态方式
3.依赖倒转原则:尽量多以来抽象类和接口而不是具体的实现类,对继承和实现的子类实现强制性和规范性
4.接口隔离原则:多使用小接口降低类之间的耦合度避免接口污染(会继承很多不该继承的方法)
5.迪米特原则(最少知道原则):一个实体尽量少于其他实体发生相互作用,使得功能模块相对独立
6.合成复用原则:当一个类1内部需要用到另一个类2的方法时,将该类2的实例作为成员变量合成/聚合成这个类1的一部分,而不是继承类2.
二、常用设计模式:固定套路的代码经验总结
1.基本分类
创建型模式:单例设计,工厂方法,抽象工厂
结构型模式:装饰器模式,代理模式
行为型模式:模版设计模式
2.单例设计模式(懒汉式):使得只能创建一个对象
私有化构造方法并用private static 修饰 singleton的引用
public static修饰getinstance方法,用两层if中间套着锁使得多线程进行创建的时候,不会使得两个线程同时创建该类实例生成两个对象。
3.抽象工厂模式:出现大量商品需要创建且有共同接口时
当需要创建新产品时,只需要对扩展类(类似mailsendfactory)创建即可,避开了开闭原则
4.装饰器模式
主要针对一个对象动态增加一个功能
新生成的类继承原接口,利用合成复用原则将实现接口的原对象(也就是 source)注入新对象的有参构造中,重写方法中调用原对象的方法,并对结果做进一步调整。
可实现动态增加功能但不能实现动态撤销而且会生成过多相似对象。
5.代理模式
与装饰器模式类似 不同点在于构造方法上不传参而是直接代理创建对象 source = new Source;所以装饰器模式关注于一个对象上动态添加方法,而代理模式关注与对控制对象的访问
6.模版方法模式
一个抽象类中封装了固定流程,具体步骤由不同子类进行不同实现。
将多个子类共有且逻辑相同的内容提取出来实现代码复用,且不同子类实现不同效果形成多态有助于后期维护。
AbstractCalculator类中 splitExpression方法封装了固定流程将传递的参数进行处理传入具体子类中需要的参数
对于要执行的流程是+还是-由子类决定,子类至于要继承抽象类对方法进行重写,在重写过程中定义要执行的流程