[设计]软件设计原则

来源:互联网 发布:条码软件系统 编辑:程序博客网 时间:2024/05/19 18:44

[设计]软件设计原则

这些原则不遵守程序也可以跑的好好的,只是出错的机率大,修改的难度高而已。

1.职责单一原则

  • 简单的理解就是一个类只做一件事。
    但是生活中到处都是意外。需求改了,有个数划分的更细了。这时我们有多种选择。
    1.第一种就是直接改加if 加方法,把这个类改的面目全飞

    2.第二种就是只加新方法,让这个类添加新划分的方法来处理。

    3.第三种就是重构,代价可能是修改调用者的方法。

    • 优点
      可以提高可读性和维护的难度和降底复杂度

2.里氏替换(组合)

  • 简单的理解就是父类所在的位置都可以用子类来替换
    这就要我们设计类的时候要能尽量的不修改父类的方法也就是说不能隐藏或重新实现,这样我们在子类中只能添加新的方法,同样对于必须修改的方法必须是输入比父类更宽松,输出比子类更严格,可以用协约编程来实现。
    但是生活中的到处都是意外,业务更改了,你使用了继承,要改父类的方法这样带来的影响是比较大的。
    所以正确的要求是:
  • 子类不能隐藏和重写(必须重写的也要保留父类的方法)
  • 添加子类自己的方法
  • 条件的要求
    能力:要能合理的抽像,并能合理的扩展,尽量多用组合聚合,少用继承

3.依赖倒置

  • 简单的说就是依赖于抽像,不应该依赖了具体
    这是因为抽像相对有比较强的稳定性,一般不会有太大的更改。
    这就是要求我们要面向接口和抽像类编程也就是面向规则和关系编程
    C#7.0 以后要支持默认接口可以更好的让我们依赖抽像。

4.迪米特(最少知道原则 )

  • 简单的说就是一个类拿到另一个地方一样能用
    也有一种说法只与直接朋友联系,不与其它朋友联系,也就是要求我们不能在本类中建立其它类的临时变量,我们的直接朋友包括参数、返回值、成员变量。
    所有的类之间的联系通过中介和传递类来进行通讯。但是不要过渡不然太多的中介类也是维护的一大问题。

5.接口隔离

  • 简单的说就是尽量一个类实现的接口都是自己必须要用的
    也就是说一个类实现的接口中如果有的方法是自己不需要的,但是实现了,那么这个接口设计就是没有实现隔离的。同样,如果一个接口一个方法,接口太多也是很难维护的。

6.开闭原则

  • 简单的说就是一个类是对扩展开放修改关闭
    也就是一个类只能扩展这个类的方法,而不能修改现在类的方法与实现,这个其实实现上面的5种原则这个基本也就是实现了。

源文链接

原创粉丝点击