目录
类划分时关于内聚性的问题
附:面向过程编程中模块的内聚性
偶尔内聚或巧合内聚(Coincidental)逻辑内聚(Logical):时间内聚(Temporal):过程内聚:通信内聚(Communicational):顺序内聚(Sequential):功能内聚(Functional):
类划分时关于内聚性的问题
静态类的设计
在软件设计中,我们经常会将一些通用的方法封装到一个类中,这品种只包含方法,没有属性,类中的方法之间没有关联,内聚性最低,属于偶尔内聚或巧合内聚。这种设计常用于工具类,一般设计为静态类,这些方法的使用时类似函数调用。设计需注意,将功能根本接近的方法封装到一个类中,切忌不能将所有的公用方法封装到一个大类中,如:日期格式转换,数字转换字符串等。
高内聚类的设计
高内聚类的设计时,依照操作功能停止封装,需遵循单一职责原则,即每一个类完成规定的某一项任务。如:dao层的类用作数据的增删改查(CRUD),数据实体仅为数据载体,用作传送数据任务。即每个封装的类仅完成一项任务。
又如迭代器形式中迭代器仅为某一个集合停止效劳,但是还要独立出来一个内部类,就是把集合数据的表示和对集合的遍历操作两项任务分开。
低耦合代表高内聚,在停止类的设计时,如类A的方法中调用了B类的方法,在A类定义属性变量或部分对象变量时,使用B类接口定义,通过注入或方法参数传入B的对象,使得二者之间形成一种松耦合的关系。假设一个类对外暴露的接口简单,接口的参数为简单数据类型,所有的复杂操作封装在类的内部,这品种内聚性最高,独立性强。如:通过短信猫发送短信,对外接口仅为sendMsg(String msg),如何创建连接、格式转换、信息发送全部封装类的内部。
附:面向过程编程中模块的内聚性
以下是面向过程中内聚性由高到低做一说明,对类划分时有一定的参考意义。
偶尔内聚或巧合内聚(Coincidental)
内内的各成分之间没有关联,只是把分散的功能合并在一起;类A内有BCDE四个方法,这四个方法均为public方法,功能含义上各自独立。前端开发api,将不同模块的api放在一起,就是偶尔耦合。- var api = {
- //登录
- getCaptcha: (param) => get(apiBase+"/captcha.jpg", param),
- adminLogin: (param) => post(apiBase+"/sys/login", param),
- //部门管理
- departmentList:(param) => get(apiBase+"/tywdepart/list", param),
- departmentAdd:(param) =>post(apiBase+"/tywdepart/save", param),
- departmentUpdate:(param) =>post(apiBase+"/tywdepart/update", param),
- departmentDelete:(param) =>post(apiBase+"/tywdepart/delete", param),
- }
复制代码 加强耦合度办法:拆分;将登录api要使用的api和部门管理api设计为两个独立的api。
逻辑内聚(Logical):
若干个逻辑类似的功能通过参数确定该模块对应哪一个功能。如:类A内有BCDE四个方法,这四个方法均为public方法,功能上类似,把它们封装在一起,如字符串转换函数工具类,包括int转字符串、double转字符串等。
时间内聚(Temporal ):
因为功能必需在同一时间内执行才写到一个模块,即这些功能只是因为时间因素才有关联。 例:程序初始化时,程序员把对所有全局变量的初始化操作放在模块A中,模块A中就是时间内聚。
过程内聚:
模块内部的处置成分是相关的,而且这些处置必需以特定的次序停止执行。一个模块,为某员工计算工龄工资:翻开员工信息文件取出员工记录;按一定的算法计算工 龄;按一定的算法计算工龄工资。 该模块中的三个相对独立的子功能必需以特定次序执行,整个模块具有过程内聚
通信内聚(Communicational):
所有处置元素集中在一个数据构造的区域上。一个模块,接收一个远程传来的信息文件,保管,同时马上打印该文件。 该模块针对同一个文件操作,打印和存盘操作没有前后顺序关系,整个模块具有通信内聚。
顺序内聚(Sequential):
模块内的各个处置元素关注同一功能,顺序执行,前一元素的输出结果作为下一元素的输入。
功能内聚(Functional):
类内所有的功能成分均为了完成一项功能效劳的,如:userDao都是为了完成用户数据库的增删改查(CRUD)效劳的。
面向过程编程中模块的内聚性参考:
https://www.jb51.net/article/120602.htm
以上就是java面向对象编程类的内聚性分析的详细内容,更多关于java面向对象编程类的内聚性的资料请关注网站其它相关文章! |