设计模式之6大原则(6)开闭原则

设计模式之6大原则(6)开闭原则

开闭原则(OCP)

面向对象设计
中“可复用设计”的基石,是面向对象设计中最重要的原则之中的一个,其他非常多的设计原则都是实现开闭原则的一种手段。
开闭原则中“开”,是指对于组件
功能的扩展是开放的,是同意对其进行功能扩展的;开闭原则中“闭”,是指对于原有代码的改动是封闭的,即不应该改动原有的代码。
遵循开闭原则设计出的模块具有两个主要特征:
(1)
对于扩展是开放的(Open for extension)。这意味着模块的行为是能够扩展的。当应用的需求改变时,我们能够对模块进行扩展,使其具有满足那些改变的新行为。也就是说,我们能够改变模块的功能。
(2)
对于修改是关闭的(Closed for modification)。对模块行为进行扩展时,不必修改模块的源码或者二进制代码。模块的二进制可运行版本号,不管是可链接的库、DLL或者.EXE文件,都无需修改。
实现开闭原则的关键就在于“抽象”。把系统的全部可能的行为抽象成一个抽象底层,这个抽象底层规定出全部的详细实现必须提供的方法的特征。作为
系统设计的抽象层,要预见全部可能的扩展,从而使得在不论什么扩展情况下,系统的抽象底层不需改动;同一时候,因为能够从抽象底层导出一个或多个新的详细实现,能够改变系统的行为,因此系统设计对扩展是开放的。
我们在
软件开发的过程中,一直都是提倡需求导向的。这就要求我们在设计的时候,要很清楚地了解用户需求,推断需求中包括的可能的变化,从而明白在什么情况下使用开闭原则。
勃兰特·梅耶一般被觉得一旦完毕,一个类的实现仅仅应该因错误而改动,新的或者改变的特性应该通过新建不同的类实现。新建的类能够通过继承的方式来重用原类的代码。衍生的子类能够或不能够拥有和原类同样的接口。梅耶的定义提倡实现
继承。详细实现能够通过继承方式来重用,可是接口规格不必如此。已存在的实现对于改动是封闭的,可是新的实现不必实现原有的接口。
在20世纪90年代,开闭原则被广泛的又一次定义因为抽象化接口的使用,在这中间实现能够被改变,多种实现能够被创建,而且多态化的替换不同的实现。相比梅耶的使用方式,多态开闭原则的定义倡导对抽象基类的继承。接口规约能够通过继承来重用,可是实现不必重用。已存在的接口对于改动是封闭的,而且新的实现必须实现那个接口。
假设一个
软件系统符合开闭原则的,那么从
软件project的角度来看,它至少具有这种优点:
可复用性好。
我们能够在软件完毕以后,仍然能够对软件进行扩展,添�新的
功能,很灵活。因此,这个
软件系统就能够通过不断地添加�新的组件,来满足不断变化的需求。
可维护性好。
因为对于已有的
软件系统的组件,特别是它的抽象底层不去改动,因此,我们不用操心软件系统中原有组件的稳定性,这就使变化中的软件系统有一定的稳定性和延续性。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/119140.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 装饰者设计模式(java版本)

    装饰者设计模式(java版本)

  • C#设计模式系列:命令模式(Command)

    C#设计模式系列:命令模式(Command)

  • JAVA设计模式初探之适配器模式

    1. 概述  将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。2. 解决的问题  即Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。      下面是两个非常形象的例子             3. 模式中的角色  3.1 目标接口(Target):客户所期待的接

  • Java设计模式之迭代子模式

    本文继续介绍23种设计模式系列之观察者模式。定义在软件构建过程中,集合对象内部结构常常变化各异,但对于这些集合对象,我们希望在不暴露其内部结构的同时,可以让外部客户代码透明地访问其中包含的元素;同时这种“透明遍历”也为同一种算法在多种集合对象上进行操作提供了可能。使用面向对象技术将这种遍历机制抽象为“迭代器对象”为“应对变化中的集合对象”提供了一种优雅的方式。迭代子(Iterator)模式又叫游标

  • 我的Java设计模式-原型模式

    我的Java设计模式-原型模式

  • PHP设计模式-工厂模式[通俗易懂]

    PHP设计模式-工厂模式[通俗易懂]PHP设计模式-工厂模式一、工厂模式概念工厂模式,顾名思义,像工厂的流水线,固定的规格,固定的材料,做固定的事情。工厂模式分为三种:简单工厂、工厂方法、抽象工厂,三种工厂的区别是,抽象工厂由多条产品线,而工厂方法只有一条产品线,是抽象工厂的简化。而工厂方法和简单工厂相对,大家初看起来好像工厂方法增加了许多代码但是实现的功能和简单工厂一样。但本质是,简单工厂并未严格遵循设计模式的开闭原则,当需要增加新产品时也需要修改工厂代码。但是工厂方法则严格遵守开闭原则,模式只负责抽象工厂接口,具体工厂交给客.

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号