文章目录
前言
点石化为金,人心犹未足
目标
理解最基础的开闭原则的理念
关键字
开闭原则
一、定义
一个软件的实体如类,模块和函数应该对扩展开放对修改关闭
用抽象构件框架,有实现扩展细节
优点
提高软件系统的可复用性及维护性
二、使用及场景
1 酒店有时候会对房间进行打折和优惠券活动。需要扩展原有代码,扩展功能
1.1 创建接口
/**
* Created by xiaojinlu1990@163.com on 2020/12/5 0005.
*/
public interface IHotel {
public String getHotelName();
public String getHotelRoom();
public String getDate();
public float getPrice();
}
1.2 实现接口
/**
* Created by xiaojinlu1990@163.com on 2020/12/5 0005.
*/
public class CtripHotelSon extends CtripHotel {
public float getNewPrice() {
return (float) (super.getPrice()*0.5);
}
}
1.3 增加优惠券,扩展接口
/**
* Created by xiaojinlu1990@163.com on 2020/12/5 0005.
*/
public class CtripHotel implements IHotel {
@Override
public String getHotelName() {
return "肖村大酒店";
}
@Override
public String getHotelRoom() {
return "9527";
}
@Override
public String getDate() {
return "new date()";
}
@Override
public float getPrice() {
return 20;
}
}
1.4 实例实现
/**
* Created by xiaojinlu1990@163.com on 2020/12/5 0005.
*/
public class Demo
{
public static void main(String[] args) {
IHotel hotel = new CtripHotelSon();
//添加打折行为
CtripHotelSon hotelSon = (CtripHotelSon) hotel;
System.out.printf("hotelName="+hotel.getHotelName()
+",hotelRoom="+hotel.getHotelRoom()
+",hotelDate="+hotel.getDate()
+",hotelPrice="+hotel.getPrice()
+",hotelNewPrice="+hotelSon.getNewPrice());
}
}
UML
总结
基础原则很重要
参考
多留言多点赞你们的只支持是我坚持下去的动力,都支棱起来!!!