当前位置: 首页 > news >正文

2017 上海网站备案微信朋友圈推广平台

2017 上海网站备案,微信朋友圈推广平台,集团网站建设案例与网站作用,wordpress 仿站步骤高层模块不应该依赖于低层模块。二者都应该依赖于抽象。抽象不应该依赖于细节。细节应该依赖于抽象。 (开闭原则、里氏代换原则和依赖倒转原则的三个实例很相似,原因是它之间的关系很紧密,在实现很多重构时通常需要同时使用这三个原则。开闭…

高层模块不应该依赖于低层模块。二者都应该依赖于抽象。抽象不应该依赖于细节。细节应该依赖于抽象。

(开闭原则、里氏代换原则和依赖倒转原则的三个实例很相似,原因是它之间的关系很紧密,在实现很多重构时通常需要同时使用这三个原则。开闭原则是目标,氏代换原则是基础,依赖倒转原则是手段。它们相辅相成,相互补充,目标一致,只是分析题时的角度不同而已)

实验一

依赖倒置可以应用于任何存在一个类向另一个类发送消息的地方。例如,Button对象和Lamp对象之间的情形。Button对象感知外部环境的变化。当接收到Poll消息时,它会判断是否被用户“按下”。它不关心是通过什么样的机制去感知的。可能是GUI上的一个按钮图标,也可能是一个能够用手指按下的真正按钮,甚至可能是一个家庭安全系统中的运动检测器。Button对象可以检测到用户激活或者关闭它。

Lamp对象会影响外部环境。当接收到TurnOn消息时,它显示某种灯光。当接收到TurnOff消息时,它把灯光熄灭。具体的物理机制并不重要。它可以是计算机控制台的LED,也可以是停车场的水银灯,甚至是激光打印机中的激光。

该如何设计一个用Button对象控制Lamp对象的系统呢?下图给出了一个不成熟的设计。Button对象接收Poll消息,判断按钮是否被按下,接着简单地发送TurnOn或者TurnOff消息给Lamp对象。

为何说它是不成熟的呢?Button类直接依赖于Lamp类。这个依赖关系意味着当

Lamp类改变时,Button类会受到影响。此外,想要重用Button来控制一个Motor对象是不可能的。在这个设计中,Button控制着Lamp对象,并且也只能控制Lamp对象。

这个方案违反了DIP。应用程序的高层策略没有和低层分离。抽象没有和具体细节分离。没有这种分离,高层策略就自动地依赖于低层模块,抽象就自动地依赖于具体细节。

请根据依赖倒置原则对上面的设计进行重构。

解析(参考):

通过倒置对 Lamp 对象的依赖关系,可以改进为一下设计:

可以看到 Button 现在和一个称为 ButtonServer 的几口关联起来。 ButtonServer 接口提供了一些抽象方, Button 可以使用这些方法来开启或者关掉一些东西。 Lamp 实现了 ButtonServer 接口。这样 Lamp 现在依赖于 ButtonServer,而不是被 Button 所依赖。

上面的设计可以让 Button 控制哪些愿意实现 ButtonServer 接口的任何设备。

实验二

某软件公司开发人员在开发 CRM 系统时发现该系统经常需要将存储在 TXT 或 Excel 文件中的客户信息转存到数据库中,因此需要进行数据格式转换。在客户数据操作类 CustomerDAO 中将调用数据格式转换类的方法来实现格式转换。初始设计方案结构如下图所示。

在编码实现上图所示的结构时,该软件公司开发人员发现该设计方案存在一个非常严重的问题。由于每次转换数据时数据来源不一定相同,因此需要经常更换数据转换类。例如:有时候需要将 TXTDataConvertor 改为 ExcelDataConvertor 。此时需要修改 CustomerDAO 的源代码,而且在引入并使用新的数据转换类时也不得不修改 CustomerDAO 的源代码。系统扩展性较差,违反了开闭原则。请使用依赖倒置原则对其进行重构。

解析(参考):

在本实验中,由于 CustomerDAO 针对具体数据转换器类编程,因此在增加新的数据转换器或者更换数据转换器时都不得不修改  CustomerDAO 的源代码。可以通过引入抽象数据转换类解决该问题。此时 CustomerDAO 将针对抽象数据转换类编程,程而可以将具体数据转换类类名存储在配置文件中,,需要更改时无需修改源代码,只需要修改配置文件即可。

http://www.zhtcad.com/news/447.html

相关文章:

  • 个人网站设计摘要通过qq群可以进行友情链接交换
  • discuz 同步wordpress刷关键词优化排名
  • 德清建设银行网站种子资源
  • 上海网站设计公司电话链接平台
  • 大型门户网站多少钱seo做得比较好的公司
  • 做旅游宣传网站的流程图企业推广的渠道有哪些
  • c2c网站有哪些平台邯郸seo优化公司
  • 网站开发工程师薪资东莞网站推广运营公司
  • 网站建设需求表怎么看百度指数
  • 免费的行情网站app软件推荐黑帽seo
  • 砀山做网站的公司百度权重4网站值多少钱
  • 可以找题目做的网站重庆网站seo公司
  • 网站备案的要求搜索引擎优化seo培训
  • 品牌设计包装seo按天计费系统
  • 怎么创建网站相册网站模板价格
  • 广东省住房和城乡建设部网站网站搜索排名优化价格
  • 做微商网站发帖免费教程外贸网站建设优化推广
  • 利用bootstrap如何做响应式网站淘宝付费推广有几种方式
  • 最好的设计师平台网站seo推广什么意思
  • iis网站下载网络营销的概念与含义
  • dramwaver做网站优化网站排名如何
  • 泉州手机网站建设百度如何推广产品
  • 自建网站怎么做优化郑州网络seo公司
  • 泳衣服饰东莞网站建设网站关键词优化软件
  • 如何做衣服销售网站南京高端品牌网站建设
  • 常宁市建设局网站湖南seo优化排名
  • 企业网站代码模板百度云搜索引擎入口官方
  • 做网站前台有什么要求什么叫优化
  • 做b2b网站管理系统手机网页链接制作
  • wordpress-erphpdown百度seo引流