- 作者:zhaozj
- 发表时间:2020-12-23 10:38
- 来源:未知
接口和口罩的相同之处何在? 1,首先,都有一个“口”字。而且这个口都有承担着传递信息的作用。 2,都能阻断一些流行疾病的传播。 3,都会带来一些不便。 2003年春天爆发的非典让大家最大限度的熟悉了口罩,使用了口罩,口罩也给我们带来了一定的安全保障 。 相应的在软件业,这个时时刻刻爆发着各种流行病毒(此病毒非电脑病毒)的产业中,大家对软件的口罩 --接口也越来越重视啦。我经过前些时间的学习和实践,有些心得,与大家分享,请大家指正。 在面向对象的软件开发中,软件是有一个个对象组成的。就好像是所有的人类构成了这个社会。既然是社 会,人和人之间就不能不发生关系,这些发生关系的人大体可以分为三类,需要深入了解,亲密接触并且 关系较稳定的人,例如恋人;只需要一般了解,需要时可以互相帮助的人,例如朋友;对你来说可有可无 无关紧要的人,例如陌生人。 而在病毒肆虐的非典时期,怎样才能使自己最大限度的幸免遇难呢?不外乎以下几条原则。 口罩使用原则: 1,尽量减少和别人接触,因为任何人都有可能变成传染源。这就要杜绝和的陌生人的接触。减少和恋人 ,朋友的接触,当然不和恋人见面是不可能的。朋友之间也不能完全断绝往来。 2,和朋友接触时,必须戴上口罩,由于口罩一定程度上可以阻挡病毒的攻击。而且要尽量减少接触,可 以简单接触解决的事,不要把它搞复杂。 3,和恋人呢?当然和恋人接触时,如果可以的话,带着口罩也能起到一定的作用,但是好像很少接吻时 戴着口罩的。“哦,亲爱的,你今天戴的什么牌子的口罩,真不错,还是水果味的。”“哦,我刚才喝的 果汁的味道也不错,而且我是戴着口罩喝的!”。由于彼此要深度接触,所以,交叉传染一般是难免的, 口罩可能也是徒劳的。也许有时候单身也不是不错的选择:)。 4,和已经证实是传染源或者是疑似的人绝对不能直接接触,如果有什么话,最好通过中间人(例如医生 )转达,当然和医生接触也要戴口罩,他们也是人。 口罩选购指南: 5,必须戴有效的口罩。怎样才是有效的口罩呢?必须符合两点:1)不能妨碍正常的交流。2)能阻挡大 部分病毒。假如,汉尼拔(《沉默的羔羊》中的主角)的那个丑陋而又满是缝隙的口罩,就不能符合第一 个条件。而绑架者用来塞住被绑者嘴的破布也不能算合格的口罩(如果它可以称为口罩的话),它违反了 第二条。 6,尽量戴漂亮的口罩,至少也应该是看着顺眼的。这样大家才更乐意和戴口罩的你打交道,而不是想让 你摘掉那个难看的口罩再说话。 已知副作用: 7,最后,也是最重要的。戴上口罩后,别人不再认的出你是谁。平时只喜欢和美女打交道男孩,偶尔也 会去和恐龙搭讪。当然戴上口罩后他也不知道她就是恐龙。也许可以因此成就想象之外的姻缘。 暂时只有这些,大家也许还有更好的建议。告诉我。 这些人类抵御非典时的原则,在于我们的软件中也同样有效。 软件业中时时刻刻都在爆发着一场一场的大大小小的瘟疫,流行疾病。小的如,在”复制粘贴大法“广泛 ”重用“的代码这样的小bug,已经有了一些预防和解决的办法(1),虽然这些办法我们还没有彻底的用 起来。大的如需求变更这样的”非典“量级的疾病,却还没有能完全避免的疫苗,不过一些预防措施还是 有的,其中现在比较流行并有效的一种就是以上的“口罩原则”。也就是合理使用接口。依次历数如下: 说明:下文中,“非典”指代需求变更;“恋人”指代有相互之间依赖性较强,其中一方改变另一方必须 随之改变的对象;“朋友”是指相互只用到已知的,有限的和稳定的几个功能的对象;“陌生人”是指相 互之间没有逻辑相关性的对象;“传染源”和“疑似”是指已知的变化比较频繁的对象,或者在将来很可 能变化的对象;“口罩”自然是接口啦。 接口使用原则: 1,“不要和陌生人说话”这条古训,不用我再强调了,大家都应该知道并遵守的。如此,“陌生人”被 查出“非典”后,你就不用担心自己是否已经被传染了啦。 2,对于“朋友”尽量使用合适的“口罩”。例如“棋友”之间使用的“口罩”,就应该只能交流和“下 棋”有关的信息,“口罩”就可以“严格”一点,只允许这些信息通过。这样即使棋友被“确诊”了,我 也不用担心。当然如果“病毒”“感染”了我们的“口罩”的话,你也就不能幸免啦。也就是除非接口定 义都被修改了,否则不会被需求变更所牵连。如果用DIP原则来看的话,接口更应该定义的是你想要得到 的服务,所以除非你想得到另外的服务或对已有的服务已不需要,否则的话,接口不应该被修改。此时, 其实是你先的了“非典”,你传染了你的“朋友”--为你提供服务的对象。或许认为是同时得了“非典 ”。 3,如果两个类互相过多的依赖的话,接口也不能起到作用。这个时候放弃接口,直接持有对方也许是更 好的解决方案。虽然在人类社会中,一对对的恋人令人羡慕,但是依赖如此紧密的对象最好没有,看来“ 单身对象”更加受欢迎。但是绝对不能让这个数量太大,否则它们会象“三角恋”那样搞得不可开交。 4,有时,仅仅口罩也是不够的,还需要一个“医生”作为中介。特别是一些确定会变化的地方,这就能 更好的隔离变化。这时,一些设计模式就变的非常有用。而且很多设计模式都是靠这个中介来实现的,例 如Adaptor, AbstractFoctroy等。“恋人们”好像很难通过中介来接吻,当然《千王之王》中周星驰可以 ,但不是每个人都做得到的。如果你本不会得“非典”,却因为你的“恋人”频频传染你,使你得“非典 ”,我想你应该考虑疏远这个“恋人”,因为你们不合适,你们不是“同命鸟”。 接口设计原则: 5,设计接口时,也必须尽量发挥它得有效性。首先,接口要满足你的要求,适应你得需求。在此基础上 ,接口中得方法时越少越简单越好。这样你暴露给别人得信息就越少。“暴露狂”在软件世界同样不受欢 迎。 6,接口命名要尽量的优美。怎么就优美呢?首先语义清楚,合乎规范(比如工厂类用XXXCreator),还 要用词简单,精炼,最好是常用词,不让大家看不懂,还要求助金山词霸。 额外好处: 7,接口在隔离变化的同时,还带来了灵活性的好处。假如,我要看球赛,我说“给我一个电视看球赛! ”,别人可以给你黑白电视,彩色电视,液晶电视,高清电视等等,给你选。我在窃喜“原来有这么多种 电视啊,多亏刚才没说给我一台彩色电视。呓,那边是什么?”“是身临其境三维体验器,你不但能用它 看球赛,而且会用身临其境的感觉。”“好,我就要它了。”“对不起,尊敬的先生,您刚才说的是要电 视,那不是电视,所以您不能用它。”“这个死板的家伙,也许我刚才应该说,“嘿,给我一个能欣赏球 赛的东西””我心想。 或者比喻有些牵强,表达的也有些混乱。这也说明我对接口理解的还不够深刻。 虽然如此,却希望借此表达出自己对接口的一些理解,期待大家的指正和讨论。