粗粒度和细粒度入门知识

从逻辑角度

  • 對象的粒度就是對象所容納的邏輯,粗粒度容納的邏輯多,細粒度容納的邏輯少,粒度一般用在权限管理(解决了粗粒度的问题,因为这部分具有通用性,而细粒度可以看成业务部分,因为其具有不确定性)

从项目角度

根据项目模块划分的细致程度区分的,一个项目模块(或子模块)分得越多,每个模块(或子模块)越小,负责的工作越细,就说粒度越细,否则为粗粒度

  • 举个例子:一个user类 其中有email属性 ,一个用户email很多个, 你可以用一个list来表示很多个email,也可以再设计一个email类,然后user的email属性是email类组成的,那么后一种设计的粒度就更细。它抽象出了更多的模型对应现实逻辑。

从用户角度

  • 当客户需要数据的时候,它当然应该知道它的数据是什么样的啊,所以getData(),setData()时的Object 对象对于用户并不是黑箱,用户可以只用一个操作就完成数据的存取,这就是粗粒度的.
  • 粒度应该是相对与该类的使用者来说的,如果存取只需要有限的操作,而没有暴露太多的底层实现则是粗粒度的,相反你把每个属性暴露给用户让它都可以对之进行操作则是细粒度的.

从实例角度

  • 粗粒度:表示类别级,即仅考虑对象的类别(the type of object),不考虑对象的某个特定实例。比如,用户管理中,创建、删除,对所有的用户都一视同仁,并不区分操作的具体对象实例。
    细粒度:表示实例级,即需要考虑具体对象的实例(the instance of object),当然,细粒度是在考虑粗粒度的对象类别之后,才再考虑特定实例。比如,合同管理中,列表、删除,需要区分该合同实例是否为当前用户所创建。

猜你喜欢

转载自blog.csdn.net/sinat_40701582/article/details/106859016