解释:该原则主要用于解决模块之间的紧耦合问题。
在很多的系统架构中经常会看到如下的结构 :
这种结构在程序中我们经常见到,例如在Java程序中在类文件中一堆的Import 语句,
或在Delphi程序中Uses后面跟一堆的东东,这些都是紧耦合的表现.
这种结构的缺点是,如果随着业务的发展,假设要替换程序中的类ClassB或ClassB中的某个方法, 那么我们要修改程序中所有的类,这是一项很庞大和结果不可预料的过程,很多的Bug都是在这种修改中产生的。
我们在程序中采用不要和陌生人说话原则后的结构:
在原结构中我们增加了一个大家都熟悉的Class 即ClassManager, 这个我们都熟悉的人物,
为了说明这个类的作用,我们可以举一个现实生活中的例子。
这个ClassManager有点像部门或公司的秘书,或者一个家庭中的管家。 有了秘书老板出差就不用自己定机票了,他就不用了解去那里订票了,那里会比较便宜,那个航空公司的服务会比较好,航空公司的服务电话是否有变化,是否有新的更好的航空公司出来,这些老板都不需要了解了,只要老板一句话,秘书一定会定一张最符合要求的机票递到老板手上。对于老板来说,有了秘书,整个世界都清静了。
对于部门员工来说,有了秘书办事也方便了,假设我们要找老板聊聊天,我们只要跟秘书说一声秘书要想跟老板聊两句,秘书就会给你安排时间,安排会议室,然后通知你,就这么简单。 如果没有秘书,我们可能还要关心老板最近有没有出差呀,老板最近心情怎么样啊,我是否要找个更合适的时间跟老板聊聊啊等等。。。, 有了秘书这些都不用了,秘书是最了解老板的人,也是最了解你的人,一切他都会给你安排好的。
这个ClassManager也有点像富人家的管家,为什么管家这个职业历经几个世纪都不会消失呢,其中自然有他的好处说在。
例如富家老爷想吃红烧肉,只要吩咐管家,马上就能到嘴边,哪天要次热干面,鸭脖子,桂林米粉,肉夹馍,鲍鱼鱼翅 ,他只要跟管家说就行了,管家会为他安排好,这些东西有可能是自己家做的,有可能是超市买的,有可能空运过来的,老爷都不用去了解。 同时家里厨子走在大街上他都可能不认识,虽然厨子每天都给他做吃的,厨子也可能不认识他,他只知道有人给他开工资,这个人是什么口味,他不用知道这人长什么样。那天厨子换了,老爷也是没感觉的,应为这两个对象是没有关联关系的。这种关系在现实中虽然有些冷酷,但是在系统中是相当有好处的。
在这种结构我们可以用很多的设计模式来达到最佳的效果。
1.  在ClassManager中使用类工厂模式ClassA ,B,C,D,E,F,G都由ClassManager来创建,将结果提升为抽象类或接口的方式反馈给使用者。
2.  使用代理模式,将请求的任务委托给代理类来处理。
3.  使用缓冲池模式,当业务很忙时可以多生成几个对象处理。
等等。
万事万物都有它的缺点。
这种结构也有它本身的弱点,在该结构中我们ClassManager 处于中心位置,大家都知道城市的中心路段是会经常堵车的,同样ClassManager有时会成为性能的瓶颈,因为有太多的对象依赖于它。 但是有矛必有盾,我们可以采用多线程技术解决响应速度问题,同步互斥解决资源争用问题。

设计原则3: 不要和陌生人说话.相关推荐

  1. 代码精进之路-设计原则

    设计原则是前辈的总结,为后来人提供经验,写出更好的代码,降低系统复杂度,提高代码的稳定性,可维护性. 有时候你觉得这个方案这样设计也可以,那样设计也没问题,犹豫不决,这时不妨参考下设计原则,也许你心中 ...

  2. uml图中的各种箭头_设计模式学习笔记(二):UML与面向对象设计原则

    1 UML 1.1 UML UML(Unified Modeling Language)是统一建模语言,1997年11月UML1.1版本提交给OMG并正式通过,成为建模语言的个那个也标准.2003年6 ...

  3. 设计一个矩形类rectangle_万字长文带你捋清六种设计模式的设计原则(建议收藏)...

    对于设计模式,自己很早之前就看了好多本设计模式书籍,其中一些还看了好几遍,也一直希望自己能在编码的时候把这些设计模式用上去.可是,在日常的打码中,用的最多的就是单例,其次是观察者和建造者模式 ( bu ...

  4. 阿里P7架构师告诉你Java架构师必须知道的 6 大设计原则

    在软件开发中,前人对软件系统的设计和开发总结了一些原则和模式, 不管用什么语言做开发,都将对我们系统设计和开发提供指导意义.本文主要将总结这些常见的原则,和具体阐述意义. 开发原则 面向对象的基本原则 ...

  5. 技术图文:01 面向对象设计原则

    01 面向对象设计原则 知识结构: 一碟开胃的小菜 小菜今年计算机专业大四了,学了不少软件开发方面的东西,也学着编了些小程序,踌躇满志,一心要找一个好单位.当投递了无数简历后,终于收到了一个单位的面试 ...

  6. 面向对象的设计原则最终篇

    点击上方"方志朋",选择"设为星标" 做积极的人,而不是积极废人 关于面向对象的设计原则我之前已经解释过四种了,分别是单一职责原则,开放关闭原则,里式替换原则, ...

  7. 对面向对象设计原则的总结

    正如牛顿三大定律在经典力学中的位置一样,"开-闭"原则(Open-Closed Principle)是面向对象的可复用设计(Object Oriented Design或OOD)的 ...

  8. 关于面向对象的的设计原则的使用

    关于面向对象的原则,相信大家都很清楚.但真正使用时,我想我们都会违反一些原则,因为要遵守这些原则,我们必须要多写好多代码.最后得不尝试. 下面我就关于这些原则发表一下个人的看法: 一.单一职责原则   ...

  9. Java设计模式GOF之6大设计原则

    Java设计模式GOF之6大设计原则原则 1.开闭原则(Open Close Principle) 一个软件实体如类.模块和函数应该对扩展开放,对修改关闭. 开闭原则是面向对象的可复用设计的第一块基石 ...

  10. 接口隔离原则_设计模式之七大设计原则(上)

    这是雷总20多年前写的汇编程序,像诗一样优雅 而中国诗词讲究平仄.押韵.对仗等一系列的规则原则, 那么想要写出像诗一样优雅的程序你不得不知的 -- 设计模式之七大原则: 1.开闭原则:对修改关闭,对扩 ...

最新文章

  1. [USACO Section 3.2] 01串 Stringsobits (动态规划)
  2. 小白兔写话_小学二年级写话-我的小白兔
  3. DOM对象和内置对象(中)
  4. jmeter—操作数据库
  5. MySQL 中 delete 语句的子查询限制
  6. 在Web应用中使用localforage存储离线数据
  7. Android之自定义ContentProvider详解
  8. word-break属性和css换行显示
  9. 掌握后可为孩子收藏的MySQL入门全套
  10. 另一个角度看Java常量池
  11. 浏览器下载文件时一共发送2次请求,如何把“下载次数”只记录为1次?
  12. Visio 2013导入图库
  13. Android 吸顶布局的写法
  14. 11.2.1 绝对值函数
  15. 京东商城注册页面使用正则表达式,可以用在别处哦
  16. CSS3实现倒影效果
  17. java生成1到10的随机数_用java生成一个1到10十个数字随机排列的数组
  18. 何海涛算法面试题感悟之九:寻找链…
  19. 51单片机系列流水灯实现(附源码)
  20. 【Linux系列】Linux之CentOS操作系统日常问题(二):catalina.out占用内存大的问题

热门文章

  1. 在河北省搜索打印复印店哪家便宜
  2. Java岗史上最全八股文面试真题汇总,堪称2022年面试天花板
  3. 新手必备!最全电路基础知识讲解
  4. 来了!Android应用市场64位应用策略
  5. 【BZOJ2794】[Poi2012]Cloakroom 离线+背包
  6. lookup基础用法
  7. Failed to resolve:问题的解决方法
  8. 技术博客|第13期:Server Side Logging:Hulu推荐系统中的特征漂移问题解决方法
  9. 计算机网络应用基础总结,(完整版)计算机网络应用基础高教版对口高考复习资料总结...
  10. 他一生只做一件事,专注150万农场鸡的鸡蛋销售