Skip to main content

tplogin.cn首页 > 新闻资讯 >

学习Java 与模式一:OCP原则概论

2014-03-08 23:59 浏览:

 面向对象的可复用性设计的第一基石是所谓的开-闭原则OCP(OCP,Open-Close Principle),OCP意为对扩展开放,对修改关闭。在设计一个模块时,应当使这个模块在不被修改的前提下被扩展。换言之,应该在不必修改源代码的情况下改变这个模块的行为。


OCP的关键是抽象化,可以给出一个或者多个抽象的Java类或者Java接口,这个抽象层遇见了所有的可能扩展性,因此,在任何扩展情况下都不会改变,这就使得系统的抽象层不需要修改,从而满足OCP的“对修改关闭”的原则。同时,由于抽象层导出的一个或多个新的具体类可以改变系统的行为,因此系统的设计对扩展是开放的,这就满足了OCP的“对扩展开放”。开闭原则换句话说,就是“对可变行性的封装原则”,找到一个系统的可变因素,将之封装起来,允许这个因素发生变化而不会导致系统需要重新设计。


上面提到几次Java接口和抽象类,他们的区别在哪里?


(1)最明显的区别,Java抽象类可以提供某些方法的部分实现,而Java接口不可以。这大概是Java抽象类唯一的有点。 如果像Java抽象类加入一个具体的方法,所有子类都得到了这个方法,而Java接口做不到这点,Java接口加入新的方法后,所有实现这个接口的类都不能成功通过编译。这是Java接口的缺点。

(2)一个抽象类的实现只能由这个抽象类的子类给出,而Java语言限制只能单继承,而接口可以多实现,这是两者最重要的区别。


(3)从代码重构的角度,添加一个Java抽象类作为抽象类型不容易,因为这个类可能已经有超类,这个抽象类只能继续往上移动,到达等级结构的上端,等级结构中的所有成员都会受影响。


(4)Java接口是定义混合类型的理想工具。——《Java与模式》


结合对实际代码的重构,对此能有更深的体会。

相关文章

snkrsflow什么意思详细介绍

2022-04-15 08:35:39    浏览: 109

snkrsstash是什么意思详细介绍

2022-04-15 08:35:59    浏览: 85

snkrs养号技巧(附详细教程)

2022-04-15 08:36:20    浏览: 88

手把手教你qq表情怎么删除厘米秀

2022-04-15 08:38:42    浏览: 162

怎么用snkrs抢鞋才能更流畅

2022-04-15 08:38:01    浏览: 67