接口设计六大原则
一.单一职责原则 Single Responsibility Principle,简称SRP。 定义:There should never be more than one reason for a class to change. 应该有且仅有一个原因引起类的变更。 ? 职责的划分?单一的定义和级别? 应该根据实际业务情况而定。关注变化点。 实际使用时,类很难做到职责单一,但是接口的职责应该尽量单一。 ? 二.里氏替换原则 Liskov Substitution Principle,简称LSP。 定义:Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it. (所有引用基类的地方必须能透明地使用其子类的对象) ? 里氏替换原则为良好的继承定义了一个规范: 1.子类必须完全实现父类的方法 2.子类可以有自己的个性(属性和方法)。 3.覆盖或实现父类的方法时输入参数可以被放大。 4.覆写或实现父类的方法时输出结果可以被缩小。 ? 注:在类中调用其他类时务必要使用父类或接口,如果不能使用父类或接口,则说明类的设计已经违背了LSP原则。 ? 三.依赖倒置原则 Dependence Inversion Principle,简称DIP 定义:High level modules should not depend upon low level modules.Both should depend upon abstractions.Abstractions should not depend upon details.Details should depend upon abstractions. 翻译过来,包含三层含义: 1.高层模块不应该依赖低层模块,两者都应该依赖其抽象。 2.抽象不应该依赖细节。 3.细节应该依赖抽象。 精简的定义: 面向接口编程。 ? Test-Driven Development 测试驱动开发是依赖倒置原则的最好体现。 测试驱动开发要求先写测试类,测试通过才写实现类,这就要求你要先想接口定义。 ? 依赖的三种写法: 1.构造函数传递依赖对象。 2.Setter方法传递依赖对象。 3.接口声明依赖对象。 ? 最佳实践: ? 四.接口隔离原则: 概括:建立单一接口,不要建立臃肿庞大的接口。 通俗来讲:接口尽量细化,同时接口中的方法尽量少。 如何细化?细化到什么程序? 没有统一的标准,应根据业务合理细分,适合业务才是重点。 ? 保证接口的纯结性: ? 最佳实践: ? 五.迪米特法则 低耦合要求: ? 六.开闭原则 软件实体包括以下几个部分: 变化的三种类型:1.逻辑变化2.子模块变化3.可见视图变化 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |