- 浏览: 56281 次
- 来自: 北京
最新评论
-
泛泛evil:
总结的很好,谢谢分享
JavaScript -
wanxkl:
哇!总结的太好了。。凤哥哥,你好强大啊。。请问您跟凤姐什么关系 ...
css应用
原则1:DRY(Don't repeat yourself)
即不要写重复的代码,而是用“abstraction”类来抽象公有的东西。如果你需要多次用到一个硬编码值,那么可以设为公共常量;如果你要在两个以上的地方使用一个代码块,那么可以将它设为一个独立的方法。SOLID设计原则的优点是易于维护,但要注意,不要滥用,duplicate 不是针对代码,而是针对功能。这意味着,即使用公共代码来验证OrderID和SSN,二者也不会是相同的。使用公共代码来实现两个不同的功能,其实就是近似地把这两个功能永远捆绑到了一起,如果OrderID改变了其格式,SSN验证代码也会中断。因此要慎用这种组合,不要随意捆绑类似但不相关的功能。
原则2:封装变化
在软件领域中唯一不变的就是“Change”,因此封装你认为或猜测未来将发生变化的代码。OOPS设计模式的优点在于易于测试和维护封装的代码。如果你使用Java编码,可以默认私有化变量和方法,并逐步增加访问权限,比如从private到protected和not public.有几种Java设计模式也使用封装,比如Factory设计模式是封装“对象创建”,其灵活性使得之后引进新代码不会对现有的代码造成影响。
原则3:开闭原则
即对扩展开放,对修改关闭。这是另一种非常棒的设计原则,可以防止其他人更改已经测试好的代码。理论上,可以在不修改原有的模块的基础上,扩展功能。这也是开闭原则的宗旨。
原则4:单一职责原则
类被修改的几率很大,因此应该专注于单一的功能。如果你把多个功能放在同一个类中,功能之间就形成了关联,改变其中一个功能,有可能中止另一个功能,这时就需要新一轮的测试来避免可能出现的问题。
原则5:依赖注入或倒置原则
这个设计原则的亮点在于任何被DI框架注入的类很容易用mock对象进行测试和维护,因为对象创建代码集中在框架中,客户端代码也不混乱。有很多方式可以实现依赖倒置,比如像AspectJ等的AOP(Aspect Oriented programming)框架使用的字节码技术,或Spring框架使用的代理等。
原则6:优先利用组合而非继承
如果可能的话,优先利用组合而不是继承。一些人可能会质疑,但我发现,组合比继承灵活得多。组合允许在运行期间通过设置类的属性来改变类的行为,也可以通过使用接口来组合一个类,它提供了更高的灵活性,并可以随时实现。《Effective Java》也推荐此原则。
原则7:里氏代换原则(LSP)
根据该原则,子类必须能够替换掉它们的基类,也就是说使用基类的方法或函数能够顺利地引用子类对象。LSP原则与单一职责原则和接口分离原则密切相关,如果一个类比子类具备更多功能,很有可能某些功能会失效,这就违反了LSP原则。为了遵循该设计原则,派生类或子类必须增强功能。
原则8:接口分离原则
采用多个与特定客户类有关的接口比采用一个通用的涵盖多个业务方法的接口要好。设计接口很棘手,因为一旦释放接口,你就无法在不中断执行的情况下改变它。在Java中,该原则的另一个优势在于,在任何类使用接口之前,接口不利于实现所有的方法,所以单一的功能意味着更少的实现方法。
原则9:针对接口编程,而不是针对实现编程
该原则可以使代码更加灵活,以便可以在任何接口实现中使用。因此,在Java中最好使用变量接口类型、方法返回类型、方法参数类型等。《Effective Java》 和《head first design pattern》书中也有提到。
原则10:委托原则
该原则最典型的例子是Java中的equals() 和 hashCode() 方法。为了平等地比较两个对象,我们用类本身而不是客户端类来做比较。这个设计原则的好处是没有重复的代码,而且很容易对其进行修改。
总之,希望这些面向对象的设计原则能帮助你写出更灵活更好的代码。理论是第一步,更重要的是需要开发者在实践中去运用和体会。
发表评论
-
lucene3.0 例一
2012-09-11 20:18 625package com.lucene;import java. ... -
lucene3.0
2012-09-11 20:15 836全文搜索 核心:创建索引——查询索引--分词器 索引引擎: ... -
分布式存储(转载)
2012-06-05 15:42 1171L1、HTML静态化其实大家都知道,效率最高、消耗最小的 ... -
java静态、动态代理
2012-04-04 18:51 811JAVA的动态代理 代理模式 代理模式是常用的java设计模式 ... -
Hibernate声明事务
2011-09-17 16:25 857事务处理 第一种方式: 首先配置datasoure: ... -
javascript应用3
2011-09-10 15:14 935打开一个新页面:{ <script t ... -
javascript应用2
2011-09-10 15:09 874日期插件的应用:{ <script type=& ... -
javascript应用1
2011-09-10 15:00 944javascript {<!-- 1.j ... -
css应用
2011-09-10 14:59 864CSS 本章目标 1、CSS的定义、优势 2、css的基 ... -
Html
2011-09-10 14:56 892HTML 超链接:{ <a href=”http:/ ... -
jsp、el、jstl.doc
2011-09-10 14:53 1303serlvet和jsp区别和联系 jsp从本质上讲也是s ... -
Jdbc
2011-09-10 14:49 872jdbc操作数据库插入、更新、删除、查找 mysql数据 ... -
文件上传步骤
2011-09-10 14:47 729文件上传的简单方法:(原理性的实验) 1. <b ... -
中文乱码问题解决
2011-09-10 14:43 7171. post方式提交的数据 采用request.setCha ... -
事务传播特性与隔离级别
2011-09-10 14:38 760事务传播特性了解事务的几种传播特性 ... -
监听器
2011-09-10 14:36 847监听器概述 1.Listener是Servlet的监听器 ... -
过滤器
2011-09-10 14:35 12121. Servlet过滤器基础 Servlet过滤器是Se ... -
web编程常用配置2
2011-09-10 14:35 683c3p0.jar:C3PO是一个数据库连接池,Hibern ... -
web编程常用配置1
2011-09-10 14:33 956mysql数据库jdbc驱动 jdbcDriver = co ... -
sql练习
2011-09-10 14:28 22411.oracle数据库启动的服 ...
相关推荐
61条面向对象设计的经验原则61条面向对象设计的经验原则61条面向对象设计的经验原则61条面向对象设计的经验原则
java 设计原则 总结 完整 PDF 里氏替换 开闭 单一等、 还包括包的5种设计原则
设计模式的六大原则
java的设计模式,简单介绍了一些注意事项,以及一些常用的东西
设计负责人 尝试Java设计原则
java oo 设计原则
JAVA架构设计原则与J2EE必读书目推荐
Java并发编程:设计原则与模式Java并发编程:设计原则与模式
JAVA设计模式之设计原则 ---开闭原则源码
Java并发编程设计原则和模式.pdf
Java并发编程:设计原则与模式(第二版)
JAVA 24种设计模式介绍与JAVA6大设计原则
主要简述了JAVA设计中一些常用的设计原则,及其相关比较
Java并发编程:设计原则与模式(第二版).pdf
Java并发编程设计原则与模式.pdf Doug Lea的大作
java面向对象设计的六大原则
java 并发变成设计原则与模式第二版 PDF版本,下载即看
jav-desing原理模式示例 Java设计原则模式示例
java并发编程:设计原则与模式.rar
例如,容易实现协议的设计。 Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;...