﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-流传的储藏罐-文章分类-架构与设计</title><link>http://www.blogjava.net/liuxiaosan/category/48199.html</link><description>操蛋的人生处处充满美妙</description><language>zh-cn</language><lastBuildDate>Fri, 08 Apr 2011 03:01:10 GMT</lastBuildDate><pubDate>Fri, 08 Apr 2011 03:01:10 GMT</pubDate><ttl>60</ttl><item><title>OOP设计原则</title><link>http://www.blogjava.net/liuxiaosan/articles/347388.html</link><dc:creator>liucs</dc:creator><author>liucs</author><pubDate>Thu, 31 Mar 2011 06:07:00 GMT</pubDate><guid>http://www.blogjava.net/liuxiaosan/articles/347388.html</guid><wfw:comment>http://www.blogjava.net/liuxiaosan/comments/347388.html</wfw:comment><comments>http://www.blogjava.net/liuxiaosan/articles/347388.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/liuxiaosan/comments/commentRss/347388.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/liuxiaosan/services/trackbacks/347388.html</trackback:ping><description><![CDATA[<strong>低耦合、高内聚 <br />
</strong>
<br />
OOP设计原则主要提供了一个方向，使得我们的程序设计得更加合理，从而获得更好的可扩展性、可维护性。主要包括以下几个原则： <br />
<br />
1、<strong>OCP（Open-Closed Principle） 开放封闭原则。 </strong><br />
对扩展开放，对修改关闭。即在不修改原有程序源码的情况下对其进行扩展。实现开闭原则的关键就在于&#8220;抽象&#8221;。
&#8220;作为系统设计的抽象层，要预见所有可能的扩展，从而使得在任何扩展情况下，系统的抽象底层不需修改；同时，由于可以从抽象底层导出一个或多个新的具体实
现，可以改变系统的行为，因此系统设计对扩展是开放的。 &#8221; 这个原则是OOP的基石，其他原则主要来实现本原则。 <br />
<br />
2、<strong>SRP （Simple Responsibility Pinciple）单一职责原则。 </strong><br />
一个类一般应该设计成只有一个职责，如果设计成具备很多职责，那么任何一个职责的改变都会引起这个类的修改，相关引用该类的代码也可能受到影响。不同的职责或功能应该由不同的类来实现，这样可以很好的控制变化带来的影响粒度。 <br />
<br />
3、<strong>DIP （Dependence Inversion Principle）依赖倒转原则。  </strong><br />
抽象不应该依赖于实现细节，实现细节应该依赖于抽象；高层不应该依赖于底层，都应该依赖于抽象。针对接口编程： 应该用接口或者抽象类声明变量、方法参数、方法返回类型等。 <br />
<br />
4、<strong>LSP （Liskov Substitution Principle）里氏代换原则。 </strong><br />
子类型完全可以替换父类型，而不需要任何修改，并且获得期望的结果。 <br />
<br />
5、<strong>ISP （Interface Segregation Principle）接口隔离原则。 </strong><br />
客户端不应该可以访问不需要的方法，这些不需要的方法是一种有害的耦合性。 <br />
所以应该设计多个专门接口而不是单个复杂的接口，客户端仅依赖最小的接口类型。 <br />
<br />
6、<strong>LoD （Law of Demeter）迪米特法则。 </strong><br />
即最少知识原则。一个对象应当对其他对象有尽可能少的了解。只和最直接的类交互，对第三方可以通过转达交互，从而减少对象间的耦合性。 <br />
<br />
7、<strong>CARP （Composite/Aggregate Reuse Principle）合成/聚合复用原则。 </strong><br />
多聚合、少继承，实现复用性。聚合的复用是一种封闭性的复用，被复用者对复用者隐藏了自身细节，而继承是一种开放性的复用，子类可以获取父类型相关的细节，破坏了封闭性。
<img src ="http://www.blogjava.net/liuxiaosan/aggbug/347388.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/liuxiaosan/" target="_blank">liucs</a> 2011-03-31 14:07 <a href="http://www.blogjava.net/liuxiaosan/articles/347388.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>