python 开闭原则_00_1面向对象设计原则-开闭原则

本文介绍了开闭原则,即软件实体应对扩展开放,对修改关闭。通过Python示例,展示了如何在不修改原有JavaCourse类的基础上,创建JavaDiscountCourse类以实现优惠活动功能,从而遵循开闭原则。
摘要由CSDN通过智能技术生成

开闭原则:是指一个软件实体(如类、模块和函数)应该对扩展开放,对修改关闭。所有的开闭,也正是对扩展和修改两个行为的一个原则。

下面我们来看一下例子,我们以课程为例:

定义课程接口:ICourse.java

packageorg.itzn.inter;public interfaceICourse {

Integer getId();

String getName();

Double getPrice();

}

课程有java高级软件开发、python、AI、前端开发,我们先来创建一个java类,JavaCourse.java

packageorg.itzn.impl;importorg.itzn.inter.ICourse;public class JavaCourse implementsICourse {privateInteger Id;privateString name;privateDouble price;publicJavaCourse(Integer id, String name, Double price) {this.Id =id;this.name =name;this.price =price;

}publicInteger getId() {return this.getId();

}publicString getName() {return this.getName();

}publicDouble getPrice() {return this.price;

}

}

测试:MyTest .java

packageorg.itzn.test;importorg.itzn.impl.JavaCourse;importorg.itzn.impl.JavaDiscountCourse;public classMyTest {public static voidmain(String[] args) {

JavaCourse javaCourse= new JavaCourse(1, "java oop", 50.0);

System.out.println(javaCourse.getPrice());

}

}

结果:50.0

现在需求来了,我们要给java高级软件开发课程做优惠活动。这时如果我们修改JavaCourse中的getPrice()方法,则存在一定的风险,可能会影响其他地方的调用结果。考虑一下,我们怎样才能不修改原有的代码的前提下,实现优惠活动呢?我们看看下面的写法:

定义JavaDiscountCourse.java

packageorg.itzn.impl;public class JavaDiscountCourse extendsJavaCourse {publicJavaDiscountCourse(Integer id, String name, Double price) {super(id, name, price);

}publicDouble getOriginPrice() {return super.getPrice();

}publicDouble getPrice() {return super.getPrice() * 0.65;

}

}

测试类:

packageorg.itzn.test;importorg.itzn.impl.JavaCourse;importorg.itzn.impl.JavaDiscountCourse;public classMyTest {public static voidmain(String[] args) {

JavaCourse javaCourse= new JavaCourse(1, "java oop", 50.0);

System.out.println(javaCourse.getPrice());

JavaDiscountCourse javaDiscountCourse= new JavaDiscountCourse(1, "java oop", 50.0);

System.out.println(javaDiscountCourse.getPrice());

}

}

结果:50.0

32.5

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值