![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
文章平均质量分 58
zengchuanfan
这个作者很懒,什么都没留下…
展开
-
OCP(开闭原则,对扩展开发,对修改关闭)
OCP原则就是在不修改源代码的情况下,设计方案能适应于各种扩展的需求(当然这是最理想的情况)。做到OCP有两点:抽象、对可变性封装。 实现开闭原则的关键就在于“抽象”。把系统的所有可能的行为抽象成一个抽象底层,这个抽象底层规定出所有的具体实现必须提供的方法的特征。作为系统设计的抽象层,要预见所有可能的扩展,从而使得在任何扩展情况下,系统的抽象底层不需修改;同时,由于可以从抽象底层导出一个或...原创 2011-09-14 11:10:16 · 405 阅读 · 0 评论 -
里氏代换原则(LSP)
任何基类可以出现的地方,子类一定可以出现(反过来不成立)。 这好像是描述了继承的一种原则,确实,在实现继承的时候,我们尽量考虑一下,java编译器能够检查语法上对里氏代换原则的支持,但是并不能支持商业逻辑上的LSP。考虑一个比较著名的长方形与正方形的问题,它能帮助我们更加深刻的理解LSP原则。 通常,在数学上来看,正方形确实属于长方形的一种,依照这种思维,正方形继承于长方形也...原创 2011-09-14 11:19:30 · 117 阅读 · 0 评论 -
依赖倒换原则(DIP)
依赖倒换原则(DIP) 要依赖于抽象,不要依赖于具体实现。DIP跟另一种说法含义相近:面向接口编程。 不知道何时有“层”这个说法,尽管你不会一眼看出XX软件分为几个层,但是确实这样的分层是有理由的,分开即耦合度降低,各司其责。你可以想想你所在公司的管理制度,那是一个金字塔模型。上层是高层管理人员,它们下发的命令直接影响最底层的工人,而最底层工人具体的工作内容并不影响上面的...原创 2011-09-14 11:22:42 · 238 阅读 · 0 评论 -
接口隔离原则(ISP)
接口隔离原则(ISP) 应当为客户端尽可能小的单独的接口,而不要提供大的总接口。 总觉得这个和“单一职责原则”很像,很多人都把它们分开来讲,我不想把它们分的太清楚,就当一种说法对另一种说法的诠释好了。 这个原则比较简单易懂,就是应该把接口细粒化,单位化,避免接口污染。这样做的好处也很明显,接口就相当于对外界的承诺,你愿意对外界承诺的更多还是更少呢?其次,从美学上讲,这是...原创 2011-09-14 11:24:19 · 82 阅读 · 0 评论 -
合成/聚合复用原则(CARP)
要尽量使用合成/聚合,而不是继承关系达到目的。 我不想去区分合成和聚合的区别。 通常如果你正在疑惑你该使用合成/聚合还是该使用继承时,我给你两种方法去判断:1.使用“Has-A”和“Is-A”来判断; 2.使用里氏代换原则来判断。...原创 2011-09-14 11:31:11 · 105 阅读 · 0 评论 -
迪米特法则(LoD)
一个软件实体尽当尽可能少的与其他软件实体发生相互作用。 LoD表述:1.只与你直接的朋友通信;2.不要跟“陌生人”说话;3.每一个软件单位对其他的单位都只有最少的知识,而且局限于那些与本单位密切相关的软件单位。 想象一下,如果你现在有件事情非常重要,需要托关系才能办成,正好你的朋友的朋友可以帮你办成此事,但是你跟他确是陌生人,你是自己直接找呢?还是你托你的朋...原创 2011-09-14 11:31:51 · 121 阅读 · 0 评论 -
你还在用if else吗?
面向过程设计和面向对象设计的主要区别是:是否在业务逻辑层使用冗长的if else判断。如果你还在大量使用if else,当然,界面表现层除外,即使你使用Java/C#这样完全面向对象的语言,也只能说明你的思维停留在传统的面向过程语言上。...原创 2011-09-28 11:13:51 · 231 阅读 · 0 评论 -
JDK里的设计模式
http://www.iteye.com/news/18725 http://stackoverflow.com/questions/1673841/examples-of-gof-design-patterns?answertab=active#tab-top原创 2011-10-22 12:16:26 · 96 阅读 · 0 评论