JAVA 七大设计原则(一、开闭原则)

JAVA 七大设计原则(一、开闭原则)

1,开闭原则

开闭原则(Open-Closed Principle, OCP)是指一个软件实体如类、模块和函数应该对扩展开放,对修改关闭。所谓的开闭,也正是对扩展和修改两个行为的一个原则。强调的是用抽象构建框架,用实现扩展细节。可以提高软件系统的可复用性及可维护性。开闭原则,是面向对象设计中最基础的设计原则。它指导我们如何建立稳定灵活的系统,例如:我们版本更新,我尽可能不修改源代码,但是可以增
加新功能。
我们以超市买饮料来举个例子:
一个超市要买饮料(偶尔会有促销饮料),我们共定义了3个类,超市类,负责售卖饮料,饮料类,包含饮料名称售价信息,促销饮料(饮料类的子类)。

Market.java 超市类,有一个main方法,负责售卖饮料的行为

    public static void main(String[] args) {
        Drinks drinks = new Drinks();
        System.out.println("开始卖" + drinks.getName() + "饮料,价格是:¥" + drinks.getPrice() + "元");
    }

Drinks .java 饮料类,假设这个饮料是雪碧,价格是5块钱

	public class Drinks {
	    public String getName() {
	        return "雪碧";
	    }
	    public double getPrice() {
	        return 5;
	    }
	}

先看前两个类,也就是普通的调用;当我们售卖促销饮料,促销价打八折的时候,展示促销价格需要对饮料做扩展,为了保证功能改动对原有功能造成风险,我们不会直接改原来的类,而是重新写一个子类,扩展它的功能。

HotDrinks.java 促销饮料类,假设促销价是打八折

public class HotDrinks extends Drinks {
    public double getActityPrice() {
        return getPrice() * 0.8;
    }
}

这个子类没有Override重写父类的getPrice(),而是扩展了一个方法getActityPrice()来返回促销价格。

这样Market的调用代码变成了这样

HotDrinks hotDrinks = new HotDrinks();
System.out.println("开始卖" + hotDrinks.getName() + "饮料,原价是:¥" + hotDrinks.getPrice() + "元,"
                + "促销价格是:¥" + hotDrinks.getActityPrice() + "元");

下面是它们之间的类关系图

类关系图

对这个例子来说,开放了对Drink类的扩展功能,而关闭了子类重写父类方法带来风险的途径。这就是所谓的开闭原则

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值