<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[会修电脑不会修收音机？——依赖倒转原则]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Tue, 26 Jan 2010 11:31:49 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	电脑比收音机简单吗？为什么拆开两者，很明显，收音机看起来还要比电脑更复杂呢？原来，好的架构好的设计在哪里都是通用的！电脑各部件缺一不可，但是绝不是只针对某一个或者某一类产品，所有不同产品的厂商都只服从一个统一的标准，这样，我们就看不出电脑中哪一个是高层了。CPU？内存？或者主板？。。。都不是，谁也不依赖谁，依赖的是一个统一的接口标准！<br/><br/>依赖倒转原则：抽象不应该依赖细节，细节应该依赖抽象。具体到一个实际问题编程，应该是定义好的接口，这个接口不属于哪一个具体的东西，应该是一个高层的抽象，然后就是针对接口编程，而不要对实现编程。<br/><br/>讲到这里，似乎世界的一切问题都迎刃而解，一切显得是那样的轻而易举！慢！一定不要自负的轻视对手，好，谁都很听话的服从这个抽象接口，那么这个抽象接口怎么来？一切都在变，难道这个抽象类就是可以违背这个哲学上绝对真理的特例家伙？他可能自身都要不停的变！完了，到哪里去找这样一根标尺呀？<br/><br/>标尺也是自己定义的！无非是会需要随实际情况变化吗？不要忘了，我们已经学会的绝技——开放—封闭原则。我们保证提供基本功能的接口不变，实际需求增加时，只要做开放扩展即可，面向对象的继承能帮助我们找到正确适用实际问题的方法，问题不就解决了吗？恩，这样设计总结出统一的抽象接口或者抽象类是满足我们的需求的，不过，还有关键的一点，这一系列类必须要满足一个原则：里氏代换原则：子类型必须能够替换掉他们的父类型。这个原则在许多别的情况下，并不一定是完全满足的，但是此处用做标尺的抽象类，必须要满足！子类可以扩展做更多的事情，但是父类已经定义好的接口子类必须有实现，并且也必须是做一致的事情。<br/><br/>依赖倒转原则说明了：好的面向对象设计不应该是依赖具体实现中的那一部分，应该是针对抽象编程而不是针对细节编程，即程序中所有的依赖关系都是终止于抽象类或者接口。那样，高层、底层的改变都不会导致另外一部分要做变化了。<br/><br/>从北京去纽约喽，;-)，还有陆路还要海洋，哈哈，变化再大我也不管，因为我做的是飞机！不过，你要是愿意先客车再渡轮也可以的哦~都是交通工具的抽象嘛！应该不会还有那个大侠想着依赖道路的，先穿跑鞋再换个泳衣去的吧~
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] 会修电脑不会修收音机？——依赖倒转原则]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>