
1.SOILD原则a.单一职责原则问题1.为了只用很少的代码实现复杂的设计需要耗费心机2.当程序规模不断扩大变更不端增加后类会变得很复杂很难记住里面的细节3. 当类负责的东西越多的时候可能会对类有修改b.开闭原则对扩展是开放的对于一个类的修改可以通过类的继承来进行实现扩展。对修改是关闭的类已做好了充分的准备并可供其他类使用。c.里氏替换原则1.子类的参数类型 必须要跟超类的参数类型相匹配或者更加抽象2.子类方法返回值类型必须跟超类方法的返回值类型或者其子类型相匹配3.子类中的方法不应该抛出基础方法预期之外的方法类型4.子类不应该加强其前置条件子类不能削弱其后置条件5.超类的不变类 必须保留d.接口隔离原则1.客户端不应该依赖于其不使用的方法2.尽量缩小接口的范围使得客户端的类不必实现其不需要的行为e.依赖倒置原则1.高层模块不应该依赖于底层模块两者都应该依赖于抽象2.抽象不应该依赖于细节细节应该依赖于抽象2.迪米特原则