zoukankan      html  css  js  c++  java
  • OOP SOLID原则

      OOP SOLID原则如下:


    S = 单一职责原则 Single Responsibility Principle

    O = 开放闭合原则 Opened Closed Principle 

    L = Liscov替换原则 Liscov Substitution Principle

    I = 接口隔离原则 Interface Segregation Principle

    D = 依赖倒置原则 Dependency Inversion Principle

     

    单一职责原则

    单一是指模块、类、方法的职责单一。当对这些软件对象修改时,不会因为修改某一个方面的功能而影响另一方面。

    模块:比如MVC,M-领域模型(负责数据的存储,业务的处理)、 V-视图(负责数据的显示)、C-控制器(负责请求到方法的映射)

    类:比如我们常用的ado.net,包含Connection、Command等对象。Connection只负责连接的管理,Command只负责查询命令管理。

    方法:一个方法只做一个动作。

       如何保证单一职责?我觉的取决于我们的抽象能力,建立合适的领域模型。比较直观的方式是控制类和方法的大小,应用设计模式,将代码分配到合适的地方。比如使用创建者模式,将负责的对象创建过程从调用方解耦到builder类。充血模型中,实体包含他自己相关    的属性和功能,比如user实体,只应负责user相关数据的管理,而不要去管理role、dept等实体,这是抽象的分界,也不要去管user的持久化,这是user仓储对象应做的事。

    开放闭合原则

    闭合耦合处的修改,开放具体实现的扩展。 
    耦合处:接口、抽象类、或者间接类,以这些进行交互,因为这部分抽象有共性,比较稳定。

    找出变化,封装变化,让变化之外的结构固定,即这部分代码是不应该修改的,为抽象增加一个新的具体实现来进行功能扩展。例如策略模式。

    接口隔离原则

    接口需小而精炼。

    依赖倒置

    调用模块和被调用模块不应直接交互,被调用模块暴露出的应该是抽象(接口、抽象类),而非实际的类。
    所谓依赖即调用,一般的调用方式有下面几种: 
    1. 构造函数参数;
    2. 方法参数;
    3. 类成员引用;

    在这些地方的引用,尽量不要直接使用具体的类型(派生类和接口实现类),而要使用接口或抽象类,来达到灵活扩展性。

    依赖有强弱,按强到弱排列如下:
    1. 类成员引用;(组合,少用继承,多用组合,UML中的关联关系)
    2. 构造函数参数;(UML中的依赖)

    3. 方法参数;(UML中的依赖)
    为了实现依赖倒置,我们需要用依赖注入(DI),如何注入,就是上面所说3种方式。

    如何存储这些依赖实例?就需要依赖容器。
    是实例就有生命周期,周期分为3种:
    瞬时:调用后马上回收
    会话:一次请求期间存在,可在一次请求内重复调用
    单例:应用重启前只存在一个并且一直存在
  • 相关阅读:
    String 对象-->indexOf() 方法
    String 对象-->大小比较
    String 对象-->判断是否相等
    String 对象-->toUpperCase() 方法
    String 对象-->toLowerCase() 方法
    String 对象-->fromCharCode() 方法
    String 对象-->charCodeAt() 方法
    从零开始学 Web 之 CSS3(六)动画animation,Web字体
    从零开始学 Web 之 CSS3(五)transform
    从零开始学 Web 之 CSS3(四)边框图片,过渡
  • 原文地址:https://www.cnblogs.com/luhe/p/2737177.html
Copyright © 2011-2022 走看看