java设计原则

原创 2013年12月03日 11:23:20
原则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() 方法。为了平等地比较两个对象,我们用类本身而不是客户端类来做比较。这个设计原则的好处是没有重复的代码,而且很容易对其进行修改。

总之,希望这些面向对象的设计原则能帮助你写出更灵活更好的代码。理论是第一步,更重要的是需要开发者在实践中去运用和体会。

java设计的七种原则

设计的七种原则 单一职责原则:一个类只应该有一个引起它变化的原因,不要让一个类有多个引起它变化的理由。换句话说,一个类应该做和一个职责相关的业务,不要让一个类承担过多的职责。一个类做的职责越单一...
  • wang1992_1992
  • wang1992_1992
  • 2016年06月19日 16:57
  • 251

Java的七大设计原则

本文转自:Java设计模式遵循的七大原则 这篇文章,作者分析有深度,带给我一些启发和思考。 最近几年来,人们踊跃的提倡和使用设计模式,其根本原因就是为了实现代码的复...
  • sugaryaruan
  • sugaryaruan
  • 2015年11月19日 12:03
  • 495

Java并发编程设计原则与模式

加锁机制的简单规则:一、永远只是在更新对象的成员变量时加锁。二、永远只是在访问有可能被更新对象的成员变量时才加锁。三、永远不要在调用其它对象的方法时加锁。...
  • ruanruoshi
  • ruanruoshi
  • 2006年04月19日 08:29
  • 1107

java设计6大设计原则

java6大设计原则: 一 : 类单一职责。         一个类只有
  • chengxu2011
  • chengxu2011
  • 2014年09月22日 10:09
  • 6868

Java设计模式的六大原则

一、分类 设计模式分为三大类: 创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、...
  • panes
  • panes
  • 2014年04月12日 11:21
  • 959

【JAVA】面向对象设计七个原则

程序是为需求服务的,需求无时无刻都有可能变更,最好一开始就依托一套优秀原则来设计程序,以下介绍面向对象设计的七个原则。...
  • u011704894
  • u011704894
  • 2016年01月20日 14:28
  • 1270

java web 设计原则之开闭原则

java web中开闭原则(OCP)是指软件实体
  • u010512642
  • u010512642
  • 2014年10月26日 11:15
  • 260

Java设计模式-六大原则

笔记来源---设计模式之禅(秦小波著) 六大原则 1. 单一职责原则 Single Responsibility Principle SRP原则 分清职责,接口一定要做到单一职责,方法也要做...
  • guolong1983811
  • guolong1983811
  • 2017年04月09日 08:46
  • 493

java中的类的设计原则

类的设计原则。
  • u013412772
  • u013412772
  • 2016年08月15日 22:34
  • 1467

《Java设计模式》七大原则

最近几年来,人们踊跃的提倡和使用设计模式,其根本原因就是为了实现代码的复用性,增加代码的可维护性。设计模式的实现遵循了一些原则,从而达到代码的复用性及增加可维护性的目的,设计模式对理解面向对象的三大特...
  • u011225629
  • u011225629
  • 2015年08月16日 08:58
  • 1248
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java设计原则
举报原因:
原因补充:

(最多只允许输入30个字)