Www.6655.h.com

Porno Japan Datinghair.com No Link 1030 If Window.mw Dating Hair 依赖倒置原理DIP,X;IoC,X - linux - Cisco网络技术

Porno Japan Datinghair.com No Link 1030 If Window.mw Dating Hair

1030 1030 Window.mw
当前位置:主页 > 编程 >

依赖倒置原理DIP,X;IoC,X

发布时间:2013-01-25 | 佚名:www.07net01.com

如果网上搜索依赖倒置原理、DIP、控制反转(IoC)容器等,会得到一大堆的信息,可能还包括我在本博客中发布的The Dependency Inversion Principle(翻译)(2005-01-28 00:22)的转载版(原文我移到了垃圾桶)。

最近,我在系统地学习/研究设计模式时,感到已经到了需要对DIP、IoC说ByeBye的时候了。

1、一个女孩子叫红、花、香,虽然俗气了点,总比叫刚、兵,让人觉得合理一点。“依赖倒置”(1)这个名字令人不舒服,(2)当用“好莱坞法则”解释时,令我困惑。

2、一农民自耕自足,后来发达了,让小丫鬟买米煮饭。旁边某人说“控制反转”了,#◎¥%#@……

[编程导论(Java)]
9.3 事件驱动编程
前面所有的程序都按照程序员预订的流程执行,即使是每次执行过程都不尽相同的多线程程序。即将介绍的事件驱动程序(event-driven program)则不同:当一个GUI程序启动后,JVM显示最初的界面图形(一个applet或窗口,以及各种组件的形状),然后处于无限循环的等待状态。一旦用户的某一个动作(user action)如单击按钮或鼠标移动发生时,JVM经过一系列底层运作找到并执行对应的代码。某种程度上,对象技术的兴旺正是源于事件驱动编程的需求压力:软件开发必须有一套方便的图形界面组件和对各种组件的事件进行响应的机制。

很多人所说的控制反转,不就是来自于控制台程序和GUI程序的不同吗?应用程序依赖于框架,如同地主依赖于丫鬟,没有什么反转不反转的说法。真正的核心是callback。

1.回调和好莱坞法则

  • 一个回调函数/方法(简称回调/ callback)是上层模块定义的,将被下层模块(反过来)调用的方法。
  • 回调通常指可以被作为参数传递给其他代码的可执行代码块,或者一个可执行代码的引用。(回调的实现)
[编程导论(Java)]

1. 回调的示例
软件开发中分层是常用的策略,例如管理信息系统常用的逻辑三层结构——表现层、业务逻辑层和数据访问层。分层架构的主要原则是:除公共模块可被各层调用外,一个层的模块只依赖于同一层或下层的模块。这样使得系统的代码具有好的可维护性。由此,下层模块不得直接调用上层中某个类的方法/接口。
然而在编程实践中,下层模块常常希望反过来调用上层的方法。如图9-11所示,上层模块Client调用了下层Server的copy()方法。假设上层需要更新进度条——显示复制任务完成的进度,显然上层并不清楚复制的进度而只有下层的Server才知道。这时下层模块如何将进度数据传递给上层的Client呢?
一种简单的方式:Server将进度数据保存在一个成员变量x中,并提供getX()。这样就需要Client时时刻刻地查询该数据。如同现实生活中打的士到某地,从上车的第一秒开始,时刻或每隔5秒问司机到了地方没有,也太烦人了。
另一种方式则是通知或使用回调。

Client定义的方法callback(int),将被Server这个被调用者反过来调用。请注意图中的分层线,通常下层模块Server不知道上层定义的接口也不应该直接调用上层接口。这是个小问题,可以在公共模块中设计一个抽象类或接口如IXxx,定义回调方法的规范,Server调用公共模块IXxx的抽象方法callback(int)即可。

2. 好莱坞法则
更新进度条或打的士,都是站在上层模块的角度考虑回调。
现在站在下层模块的角度重新考虑回调,另外增添一点变化——多个Client的对象或多个IXxx的其他实现类对下层Server2对象的某种状态变化感兴趣。
以现实生活中的场景为例:一些男女演员们(Client)都对某导演(Server2)是否拍新片子感兴趣。导演肯定和的士司机一样,不喜欢演员们天天打电话询问。于是导演提供了一个让感兴趣的演员们留下电话号码的接口register(IXxx listener)。一旦导演准备拍摄一部新片子(sthHappened())就通知所有已登记的演员。而对于那些随时打电话询问是否有戏的演员,导演告诉他们一条好莱坞法则:"Don't call me; I'll call you."。

[/编程导论(Java)]

2.两个结构

这是DIP的类图。

这是回调/好莱坞/观察者模式的类图:

两个结构完全相同的图,却有完全相同的含义/语义。

DIP的类图中,Client可以随时随地地调用Server,但是地主应该依赖于“I丫鬟”;

回调/好莱坞/观察者模式的类图中,S绝对不允许依赖C。

用好莱坞法则、钩子解释OCP、DIP、模板方法显得异常地别致。

编译:依赖倒置原理DIP,X;IoC,X

地址:program/60032.html

  • 更多
    上一篇:关于编程中的命名问题
    下一篇:c static关键字理解
    相关内容
    本栏热门推荐
    热门排行
    随便看看
    关于我们 | 联系我们 | 版权声明 | 意见反馈 | 网站地图 | 在线帮助 | | HowToBeautiful | HowSmokeyEye
    本站为您提供优质的Cisco网络技术相关文档与资讯,如果您有好的建议或意见,请发邮件告知我们。Email:bbc12000@163.com
    rPorno Japan Datinghair.com No Link 1030 If Window.mw Dating Hair 依赖倒置原理DIP,X;IoC,X - linux - Cisco网络技术o g Jiuozz rPorno Japan Datinghair.com No Link 1030 If Window.mw Dating Hair 依赖倒置原理DIP,X;IoC,X - linux - Cisco网络技术v f Xxxbunkerconcm