`
zcw_java
  • 浏览: 303800 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

4、开-闭原则

 
阅读更多
软件设计模式中,这种不能修改,但可以扩展的思想也是最重要的一种设计原则,它就是开-闭原则(The Open-Closeed Principle简称OCP)

也就是说软件实体(类,模块,函数等等)应该可以扩展,但是不可修改.

该原则最重要两个特征
1,对于扩展是开放的(Open for extension)
2,对于更改是封闭的(Closed for modification)
这样可以确保我们设计后,面对需求的改变却可以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新的版本.

在我们最初编写代码时,假设变化不会发生,当变化发生时,我们就创建抽象来隔离以后发生的同类变化.

在设计User类时添加属性
private ExtAttributes extAttributes = new ExtAttributes();
@Embedded
public ExtAttributes getExtAttributes() {
    return extAttributes;
}
public void setExtAttributes(ExtAttributes extAttributes) {
    this.extAttributes = extAttributes;
}

ExtAttributes类!
import javax.persistence.Column;
import javax.persistence.Embeddable;
import java.io.Serializable;

/**
 * User: stone
 * Date: 11-8-11
 * Time: 下午5:38
 */
@Embeddable
public class ExtAttributes implements Serializable {
    private static final long serialVersionUID = 5490009945478271902L;
    private String attr0;
    private String attr1;
    private String attr2;
    private String attr3;
    private String attr4;
    private String attr5;

    @Column(length = 50)

    public String getAttr0() {
        return attr0;
    }

    public void setAttr0(String attr0) {
        this.attr0 = attr0;
    }

    @Column(length = 1000)

    public String getAttr1() {
        return attr1;
    }

    public void setAttr1(String attr1) {
        this.attr1 = attr1;
    }

    @Column(length = 1050)

    public String getAttr2() {
        return attr2;
    }

    public void setAttr2(String attr2) {
        this.attr2 = attr2;
    }

    @Column(length = 50)

    public String getAttr3() {
        return attr3;
    }

    public void setAttr3(String attr3) {
        this.attr3 = attr3;
    }

    @Column(length = 50)

    public String getAttr4() {
        return attr4;
    }

    public void setAttr4(String attr4) {
        this.attr4 = attr4;
    }

    @Column(length = 50)

    public String getAttr5() {
        return attr5;
    }

    public void setAttr5(String attr5) {
        this.attr5 = attr5;
    }
}

这里给user做了扩展字段,不难看出开闭原则了吧.可能我写的不太好,还希望大家多多指正,这样大家讨论一下,共同提高.

总之,面对需求,对程序的改动是通过增加新代码进行的,而不是更改现有的代码.
看看前面的简单工厂,策略模式,是不是有点感觉了.

开闭原则是面向对象设计的核心所在,遵循这个原则可以带来面向对象技术所声称的巨大好处,也就是可维护,可扩展,灵活性好.开发人员应该仅对程序中呈现出频繁变化的那些部分做出抽象,然而对于应用程序中的每个部分都刻意地进行抽象同样不是一个好注意,拒绝不成熟的抽象和抽象本身一样重要..(本人抽象不成熟)
分享到:
评论

相关推荐

    JAVA设计模式之设计原则 ---开闭原则源码

    开闭原则是面向对象设计中的一个核心原则,它在JAVA设计模式中占据着重要的地位。这一原则由格里·贝斯提出,旨在指导开发者如何设计可维护和可扩展的软件系统。开闭原则(Open-Closed Principle,OCP)的核心思想是...

    开闭原则----图片缓存

    开闭原则是面向对象设计中的一个基本原则,它由软件工程专家 Bertrand Meyer 在其著作《Object-Oriented Software Construction》中提出。这个原则的核心思想是“对扩展开放,对修改关闭”。简单来说,就是模块应该...

    面型对象设计原则——开闭原则(OCP)的Demo+静态结构图

    开闭原则(Open-Closed Principle,简称OCP)是面向对象设计中的一个核心原则,它在软件工程领域具有举足轻重的地位。该原则由 Bertrand Meyer 在其著作《Object-Oriented Software Construction》中提出,旨在提高...

    开闭原则1

    开闭原则是面向对象设计的基本原则之一,由勃兰特·梅耶在1988年提出。这个原则的核心思想是:软件实体(如模块、类、接口和方法)应该对扩展开放,对修改关闭。这意味着在需求变更时,我们可以通过增加新代码来扩展...

    开闭原则OCP.zip

    开闭原则(Open-Closed Principle,简称OCP)是软件设计模式中的一个基本原则,由艾兹格·迪米特里斯·伯纳斯-李提出。这个原则指出,软件实体(类、模块、函数等)应当对扩展开放,对修改关闭。换句话说,当软件...

    Java Web设计模式之OCP(开闭原则)

    开闭原则(Open-Closed Principle,OCP)是软件工程中的一个基本原则,由Bertrand Meyer在1988年提出,它是面向对象设计的核心之一。这个原则规定了软件实体(如类、模块、函数等)应该对扩展开放,对修改关闭。这...

    论开闭原则在JAVA程序设计中的应用.zip

    开闭原则是面向对象设计的基本原则之一,由格里·贝迪奇在其著作《设计模式:可复用面向对象软件的基础》中提出。这个原则主张软件实体(类、模块、函数等)应当对扩展开放,对修改关闭。简单来说,就是在不修改原有...

    开闭原则.rar之java设计模式

    开闭原则是面向对象设计中的一个基本原则,它主张软件实体(包括类、模块、函数等)应当对扩展开放,对修改关闭。这意味着在不改变原有代码的基础上,可以通过增加新的功能来适应需求的变化,从而提高软件的可维护性...

    PHP面向对象五大原则之开放-封闭原则(OCP)详解

    4. 要注意到开放-封闭原则是设计原则之一,它并不是一个硬性的规则。在设计时,我们应该结合具体的应用场景和其他的设计原则(比如单一职责原则、里氏替换原则等)来综合考虑。 在使用开放-封闭原则时,需要在系统...

    面向对象的设计原则

    - **可插入性**:同样地,开-闭原则、里氏替换原则、依赖倒置原则和合成/聚合复用原则也有助于提高系统的可插入性。 通过这些原则的综合运用,可以帮助开发团队构建出更加健壮、灵活且易于维护的软件系统。

    11丨软件设计的开闭原则:如何不修改代码却能实现需求变更?.pdf

    开闭原则是面向对象设计中的一个基本原则,它指导着我们如何设计出可维护、可扩展的软件系统。根据开闭原则,软件实体如模块、类或函数应当对扩展开放,对修改关闭。这意味着当需求发生变化时,我们应当尽可能地通过...

    电信设备-托盘开闭装置.zip

    在电信行业中,设备的可靠性与效率至关重要,而托盘开闭装置是其中不可或缺的一部分。它主要负责保护和管理电信设备内部的组件,确保设备在运行过程中能够顺利进行维护和升级。"电信设备-托盘开闭装置.zip"这个...

    24种设计模式介绍与6大设计原则

    1、开闭原则(Open Close Principle) 开闭原则就是说对扩展开放,对修改关闭。在程序需要进行拓展的时候,不能去修改原有的代码,实现一个热插拔的效果。所以一句话概括就是:为了使程序的扩展性好,易于维护和...

    电子功用-开闭机的电动及手动的制动装置

    开闭机的电动及手动制动装置是电力驱动设备中至关重要的组成部分,它们在控制系统中扮演着安全、稳定运行的关键角色。这些装置确保了设备在需要时能够迅速停止,同时在故障或紧急情况下提供必要的保护措施。以下是...

    OO设计原则-里氏替换原则

    2. **支持开闭原则**:里氏替换原则是实现开闭原则的基础之一,即软件实体应该对扩展开放,对修改关闭。 3. **简化设计**:通过遵循LSP,可以简化设计,避免过度设计或不必要的复杂性。 4. **增强可维护性**:易于...

    面向对象七大原则

    开闭原则是通过抽象化来实现的,抽象化是开闭原则的关键。 2. 依赖倒转原则(Dependency Inversion Principle) 依赖倒转原则是指高层模块不应该依赖低层模块,它们都应该依赖抽象。抽象不应该依赖于细节,细节...

Global site tag (gtag.js) - Google Analytics