zoukankan      html  css  js  c++  java
  • oo设计原则[转]

    设计原则是基本的工具,应用这些规则可以使你的代码更加灵活,更容易维护,更容易扩展。

    基本原则(oo design princples)

    封闭变化 encapsulate what varies.

    面向接口编程而不是实现 code to an interface rather than to an implementation

    优先使用组合而非继承 favor composition over inheritance

    SRP: The single responsibility principle单一职责

    系统中每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成。

    every object in your system should have a single responsibility , and all the objects services should be focused on carrying out that single responsibility.

    1.每一个职责都是一个设计的变因,需求变化的时候,需求变化反映为类职责的变化,当你系统里面的对象都只有一个变化的原因的时候,你就已经很好的遵循了SRP原则。

    2。如果一个类承担的职责过多,就等于把这些职责耦合在了一起。

    3。SRP让这个系统更容易管理维护,因为不是所有的问题都搅在一起。

    4。内聚cohesion其实是SRP原则的另外一个名字,你写了高内聚的软件其实就是说你很好的应用了SRP原则。

    DRY:don’t repeat yourself principle

    通过抽取公共部分放置在一个地方避免代码重复。

    OCP:open-close principle开闭原则

    类应该对修改关闭,对扩展打开;

    classes should be open for extension, and closed for modification

    LSP: the liskov substitution principle

    子类必须能够替换基类

    subtype must be substitutable for their base types.

    1.lsp关注的是怎么良好的使用继承。

    2。必须要清楚是使用一个method还是要扩展它,但绝对不是改变它。

    3。LSP清晰的指出,OOD的IS-A关系是就行为方式而言,行为方式是可以进行合理假设的。是客户程序所依赖的。

    4。LSP让我们得出一个重要的结论:一个模型如果孤立的看,并不具有真正单方的有效性。

    5。对LSP的违反也潜在的违反了OCP。

    DIP:依赖倒置原则。

    高层模块不应该依赖于底层,二者都应该依赖于抽象。

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

    ISP:接口隔离原则

    不应该强迫客户程序依赖它们不需要的使用的方法。

    为什么我们过早的纠缠于细节?问题的本质是什么?

    思考没有层次这就是问题本质所在

    善良的人在追求中纵然迷茫,却终将意识到有一条正途。《浮士德》

    三层视角:概念视角,规约视角,实现视角。视角帮助我们将问题划分层次,隔离。

  • 相关阅读:
    《人工智能的下一个挑战 —— 可解释性和可诠释性?》
    《python源码剖析-字节码和虚拟机》
    PP生产订单成本的计划、控制和结算
    存货核算当期单价(调整当期存货单价)
    财务审计核算单价
    成本核算过程
    WMS与MES集成
    月初一次冲回与单到冲回的理解
    财务结算的目的和一般流程
    ERP启动会
  • 原文地址:https://www.cnblogs.com/chenqingwei/p/1580224.html
Copyright © 2011-2022 走看看