欢迎光临散文网 会员登陆 & 注册

面向对象设计模式 -- 六大设计原则

2023-04-07 19:42 作者:原装-_-老弟  | 我要投稿

面向对象设计模式 -- 设计原则

        写代码时,经常性的会遇到许多纠结的问题,比如,在修改用户信息时,犹豫是写多个方法来分别实现对应信息的修改,还是写一个类,根据某一参数来判断是哪个数值的修改,然后在方法中一堆 if 或者 switch 来修改等等。

        如果是,那很显然,对于面向对象的设计模式,你还没有了解太多,否则你会对这些犹豫的处理会很有条理。

  1. 单一职责

    一个对象或接口应该只包含单一的职责,且该职责被完整的封装在一个类中。

  2. 开闭原则

    一个软件实体(类、函数等)应该对外拓展开放,对修改关闭。

  3. 里式代换

    原定义:

    1. 第一种定义--If for each object o1 of type S there is an object o2 of type T such that for all programs P defined in terms of T,the behavior of P is unchanged when o1 is substituted for o2 then S is a subtype of T. 如果对每一个类型为S的对象o1,都有类型为T的对 象o2,使得以T定义的所有程序P在所有的对象o1都代换成o2时,程序P的行为没有发生变 化,那么类型S是类型T的子类型。

      就是说一个子类可以完全替换父类的使用。


    2. 第二种定义--Functions that use pointers or references to base classes must be able to use objects of derived classes without knowing it. 所有引用基类的地方必须能透明地使用其子类的 对象。


  4. 依赖倒转

         高层模块不应该依赖底层模块,应该都依赖于抽象;

         抽象       不应该依赖于细节,细节应该依赖于抽象。

        就是说抽象应该是在抽象与细节之间是独立的,不需要考虑已经实现的细节。

  5. 接口隔离

         不应继承不需要的接口。

         这里不是表面的类不继承其他不需要的接口,还蕴含的潜规则是:已经继承的接口中也不出现不需要的接口。即,接口也应该保持自身的简洁性。

  6. 合成复用

         优先使用对象组合,而不是继承。

  7. 迪米特法则

        最少知识原则。即一个对象应该对其他对象有最少的了解。

         对象在访问其他对象时,可访问的成员数量应该尽可能少。


参考:

设计模式之禅--秦小波


面向对象设计模式 -- 六大设计原则的评论 (共 条)

分享到微博请遵守国家法律