今天看到一个比喻,用来形容类的类的松耦的比要性。
虽然对类的封装之类的好处早有体会,也懂得它的重要性。但站在一个架构师的角度再去考虑这个问题的时候,就不会那会那么简单了。谁都知道应该封装,那一个类又应该怎么封装呢,什么属性该放,什么方法该放,什么又不该放。
无论如何,我的理解就是现实中一句很实在的话:自己的事自己做!不是自己的事,我们就不要强迫让放入自己的方法。
也许我的话并不太理解,那么下面这个比喻,让我自己也对自己的想法有了一个更好的理解。
如果你想要跟别人借钱,你会怎么做,找一个你想借的,有借钱这个功能的东西,这个东西就是你身边的朋友--那是你身边的一个个实例。总不谁都借啊,向谁借,这是你自己的事,当然得通过你的方法来决定。找到一个能借钱给你的人后,你就应该跟他借钱了。有很多刚入门的朋友就是老手有时候也会想封装类,或者设计模式的搭建实在是很浪费时间的,就像MVC一样,操作一个数据都要经好几次手,如果叫你来设计而不是去看人家的代码,你的第一想法也许是直接去操作它。对的,所有的模式,封装都是与性能都不是很亲和的。这就和借钱一个理了,你应该直接去你朋友钱包里去取么,最好的方式应该这你这样。你 发出一个借钱信息给你 朋友;下面都是你朋友自己的事了,让他这个类自己来处理,你可以站在一门外等了,而他也开始通过自己的方法看能不能借给你;决定了之后看钱包看有没有钱,拿出钱来给你并给你一个来拿钱的信息。然后你也就通过他手这个接口来拿到你借的钱,而他的钱是那来的,从哪拿的,他是怎么想的,可以是你关心的事,但都不是你做的事。
这也就是为什么我看很多人abstarct做接口的原因,我喜欢更纯洁一点的interface。放在这里因为我认为这是在框架上的一种思考,更胜于纯语言的研究。
![](https://img2024.cnblogs.com/blog/35695/202408/35695-20240826070647288-243310440.jpg)