耦合的3个标准:
规模:模块的连接数。越少越好。
可见性:连接的显著程度。越明显越好。
灵活性:模块之间的连接是否容易改变。
其实对于灵活性的理解会和参数传递中传递对象,还是对象中的成员有关联。
按照灵活性来说传递的该是对象中的成员。
当然也不能一味的为了灵活性而只传对象中的成员。
更多确定是传对象还是成员还得根据子程序的抽象层次决定。这其实信息隐藏的一个方面:有些信息隐藏在子程序中,而有些信息隐藏对子程序是隐藏的。信息按照有必要了解的原则进行传递。
有时候你发现有一对数据总是会结对出现,比如说经纬度。那么可以把这二个参数作为一个对象来传递。
耦合种类:
简单数据耦合:模块传递简单数据
简单对象耦合:传递简单对象
对象参数耦合:一个模块需要另一个模块传给它第三个模块。
语义耦合:
1.method(int type)
{
if(type=0){...}
if(type=1){....}
}
这就需要调用它的模块知道其内部细节。
2.method(ObjectA a){
a.getId();
a.getName();
}
然后我们在调用这个方法的时候只初始化了a的这二个成员。
(这个似乎又于灵活性那段有关。)
3.method(BascicObjecA a){
(ObjecA) a.method();
}
传递对象的是个接口或父类,在调用时我们向下转型了。并且调用了特定方法。
规模:模块的连接数。越少越好。
可见性:连接的显著程度。越明显越好。
灵活性:模块之间的连接是否容易改变。
其实对于灵活性的理解会和参数传递中传递对象,还是对象中的成员有关联。
按照灵活性来说传递的该是对象中的成员。
当然也不能一味的为了灵活性而只传对象中的成员。
更多确定是传对象还是成员还得根据子程序的抽象层次决定。这其实信息隐藏的一个方面:有些信息隐藏在子程序中,而有些信息隐藏对子程序是隐藏的。信息按照有必要了解的原则进行传递。
有时候你发现有一对数据总是会结对出现,比如说经纬度。那么可以把这二个参数作为一个对象来传递。
耦合种类:
简单数据耦合:模块传递简单数据
简单对象耦合:传递简单对象
对象参数耦合:一个模块需要另一个模块传给它第三个模块。
语义耦合:
1.method(int type)
{
if(type=0){...}
if(type=1){....}
}
这就需要调用它的模块知道其内部细节。
2.method(ObjectA a){
a.getId();
a.getName();
}
然后我们在调用这个方法的时候只初始化了a的这二个成员。
(这个似乎又于灵活性那段有关。)
3.method(BascicObjecA a){
(ObjecA) a.method();
}
传递对象的是个接口或父类,在调用时我们向下转型了。并且调用了特定方法。