(精华)2020年8月30日 通用职责分配原则(一)-信息专家原则(Information Expert Principle)

举报
愚公搬代码 发表于 2021/10/19 01:25:32 2021/10/19
【摘要】 信息专家原则(Information Expert Principle) (1)问题 给对象分配职责的通用原则是什么? (2)方案 将职责分配给拥有履行一个职责所必需信息的类,即信息专家。 (3...

信息专家原则(Information Expert Principle)

(1)问题

给对象分配职责的通用原则是什么?

(2)方案

将职责分配给拥有履行一个职责所必需信息的类,即信息专家。

(3)分析

信息专家原则是面向对象设计的最基本原则。通俗点来讲,就是一个类只做自己应该做的事。在系统设计时,需要将职责分配给具有实现这个职责所需要信息的类。信息专家原则对应于面向对象设计原则中的单一职责原则。

示例

public class AES {

    public string Decrypt(string ciphertext, string salt) {
        throw new NotImplementedException();
    }

    public void Post(string url, string cleartext, Dictionary<string, string> heads) {
        throw new NotImplementedException();
    }

}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

AES解密类,Decrypt方法为解密方法,需要传递密文和盐,这个类中包含了另外一个方法Post以向某个url发送明文数据。

显然Post方法不应该属于AES类,因为职责分配不合理。解密类应专注于解密动作,发送数据的Post方法应该封装在另外一个类中。以下是解决方案:

public class AES {

    public string Decrypt(string ciphertext, string salt) {
        throw new NotImplementedException();
    }

}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
public class PostUtil {
    public static void Post(string url, string content, 
        Dictionary<string, string> heads) {
        throw new NotImplementedException();
    }
}

  
 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

经过简单的改造,AES类变成了AES解密的信息专家,而PostUtil工具类变成了发送数据的信息专家。

文章来源: codeboy.blog.csdn.net,作者:愚公搬代码,版权归原作者所有,如需转载,请联系作者。

原文链接:codeboy.blog.csdn.net/article/details/108292706

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。