微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

类文件的单一接口原则

面向对象有一个重要的原则:单一职责原则。即一个类应该尽量只承担一种职责。

前几天做了个小程序,把多个类定义在了一个文件中。类和类之间有依赖的关系,还共用几个变量。同时,三个类都有被外界调用的可能。昨晚想来想去觉得不妥。最终得一结论:类文件应该符合单一接口(类)。

对此做如下说明:

一.所谓单一接口是指类的文件对外只有一个发言人。即只有一个类是被外界调用的,在外界看来这个文件中似乎只有这么一个类。

二.该对外接口同样得符合单一职责原则。不能是个万能的上帝类。

三.文件内部其他类或结构只能被封装在内部,供内部使用。如果确实想和其他文件共有类和结构,请把它们解耦出来,形成单个文件

这样才能真正的把文件文件之间解耦,更清晰地看出对象的依赖关系。

举个例子,一个文件F中含有A和B两个对外接口。我们不知道A和B之间有没有关系,因为一个文件对我们来说就是一个封装好的组件。此时如果我要用到A,那我们不得不把庞大的F加载进来,B很可能就是一个冗余的接口。要修改B,那我们还必须对整个F文件进行修改。A和B”耦合“了(不管他们是否真的耦合,至少外界看来是这样)。

2010.4.26补充:

以上所说如果A和B放在同一文件里说明他们之间”耦合“了。这里所说的耦合是从F文件使用者的角度来说。因为使用者并不关心内部结构,对他来说这个封装好的文件就是一个整体。他们内部可能是松耦合的A和B一点关系也没有。可使用者不知道啊,这样F文件的原创者修改了F文件中的B,那他就不得不对没一个使用F文件的人发布新的文件,让他们重新编译F文件

再举一例说明:

本来甲建了一文件F,包含A和B。乙拿过来用了(甲也不知道乙到底是用了A还是B,只知道用了F文件)。后来甲修改了B,B又引用到了其他文件,把F发给了乙。那么乙不得不也把这些引用到的文件全部加载进来以保证编译通过,这都是不必要编译麻烦。

原文地址:https://www.jb51.cc/javaschema/287588.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐