作为一个软件设计师,<作为一个软件设计师。<作为一个软件设计师。需要使得软件的可维护性强,可复用性高。这样才干使得该软件的生命周期长,不致于被淘汰。要做到这些,必需坚持以下原则:
1开-闭”原则
不修改原因逻辑不影响原因功能的广州网站制作情况下。实现新的行为。拓展出新的逻辑。
知固而不知革。物失其均”物失其则;知革而不知固。
对可变性的封装。 笼统化是关键。
接口就像是一个角色。所以一个接口可以不同的具体类实现,具体实现类就像是演员。接口是笼统的演员是具体的一个角色可以让多个不同的演员演。一个演员也可以演多个角色,所以一个具体类可以演多种角色。
具体类不是用来继承的就像树叶。笼统类应当尽可能多的拥有共同的代码。 笼统类是用来被子类继承的就像树枝。
2里氏代换原则
子类一定适用。 说明了笼统化到具体化的关系。凡是基类适用的地方。
3依赖倒转原则
笼统层次通常包括对整个系统来说重要的宏观的战略性的体现。而不是笼统层次依广州软件设计赖具体层次。而具体层次则是常变化的战术上的体现。要使具体层次依赖于笼统层次来实现。
针对接口编程。具体类就只应该接口或笼统类中声明过的方法,而不是针对具体实现。应当适用接口或笼统类进行类型声明、参数类型声明、返回类型声明、数据类型转换等。要保证这一点。而不应该有多余的方法。
混合适用笼统类和接口是不错的选择。并给出默认实现,让笼统类实现接口。阳光设计让具体类继承笼统类。防止接口加方法时,所有的子类都要改一遍。
创建对象时。这样就不符合依赖倒转原则,往往会用到具体类。解决方法就是用工厂模式来建立对象,这样new具体类的逻辑就在工厂里了依赖方只需要用抽象的类引用就行了
4接口隔离原则
适用多个专门的接口比使用一个总的接口要好。一个类对另外一个类的依赖应当是建立在最小的接口上。一个接口应当简单的代表一个角色。造成接口臃肿,而不是多个角色。不应该把不同的角色都交给同一个接口。这是对角色和接口的污染。
5合成/聚合复用原则
合成/聚合就是一个新的对象里面使用一个已知的对象。通过对这些对象的委派阳光设计达到复用已有功能的目的使之成为新对象的一部分。
尽量不要使用继承。 尽量使用合成/聚合.
合成表示一种整体与部分的关系。发动机离开汽车可以单独存在聚合是一种关系更强的拥有,如汽车与发动机。如人与手,手不能离开人而单独存在
则可以利用合成/聚合将新的责任委派到合适的对象。 如果一个角色得到更多的责任。
继承和合成/聚合都能实现代码复用。继承是"IS-A "关系。表示一个角色拥有某项责任。表示一个子类是父类中的一种。合成/聚合是"HA S-A "关系。
6迪米特法则
即一个对象对其他对象应该尽量少的解。能极大的减少系统的耦合度。 又叫最少知识原则。
如果一个对象内部构成了自己的朋友圈”而外部对象为“陌生人”话。而要通过“朋友圈”来中转。如门面模式。那么对象不应该和外部对象直接对话。
完全地将提供给外界的api和自己的实现分隔开来。使模块间解耦合。 一个好的模块设计最主要的标志是将它所有的实现细节隐藏起来。