zoukankan      html  css  js  c++  java
  • 单一职责

    首先什么是职责,在这里,职责就是变化的原因。

    一个类应该仅有一个引起他变化的原因。

    单一职责也称之为内聚性,内聚性的定义为一个模块组成元素之间的功能相关性。简单的说,单一职责就是说一个模块组成元素之间的相关性应该是很强的,或者说他们只有一种相关性。

    1     class Rectangle
    2     {
    3         void Draw();
    4         double Area();
    5     }

    在上面的代码中,长方形有两个方法,一个是绘画,一个是计算面积;这个实际上违反了单一职责,因为,画图时涉及到界面展示的部分,而面积是数学模型的计算。

    将两个职责分开

    1     class GeometricRectangle
    2     {
    3         double Area();
    4     }
    5     class Rectangle
    6     {
    7         void Draw();
    8         GeometricRectangle GeoRect;
    9     }

    这样当你需要画画的时候可以使用Rectangle,当你需要计算面积的时候可以使用GeometricRectangle。

    使用接口解耦职责

    1     class Modem
    2     {
    3         void dail();
    4         void hangup();
    5         void send();
    6         void recv();
    7     }

    上面的Modem建立连接和数据发送两个职责,如果这两个职责不是同时发生的话,可以通过接口的方式来进行解耦。

     1     interface Connection
     2     {
     3         void dail();
     4         void hangup();
     5     }
     6 
     7     interface Data
     8     {
     9         void send();
    10         void recv();
    11     }
    12     class Modem:Connection,Data
    13     {
    14     }

    这样当我们使用某一个职责的时候,调用接口,就可以屏蔽到具体的对象。

  • 相关阅读:
    树链剖分 (模板) 洛谷3384
    ST表 (模板) 洛谷3865
    IOI 2005 River (洛谷 3354)
    IOI 2005 River (洛谷 3354)
    poj1094 Sorting It All Out
    poj1094 Sorting It All Out
    spfa(模板)
    HAOI 2006 受欢迎的牛 (洛谷2341)
    HAOI 2006 受欢迎的牛 (洛谷2341)
    洛谷1850(NOIp2016) 换教室——期望dp
  • 原文地址:https://www.cnblogs.com/HighFun/p/2601842.html
Copyright © 2011-2022 走看看