某软件公司为某电影院开发了一套影院售票系统,在该系统中需要为不同类型的用户提供不同的电影票打折方式,具体打折方案如下:
(1) 学生凭学生证可享受票价8折优惠。
(2) 年龄在10周岁及以下的儿童可享受每张票减免10元的优惠(原始票价需大于等于30元)。
(3) 影院VIP用户除享受票价半价优惠外还可进行积分,积分累计到一定额度可换取电影院赠送的奖品。
(4) 军人免费
(5) 60岁以上老人半价
该系统在将来可能还要根据需要引入新的打折方式。现使用策略模式设计该影院售票系统的打折方案并代码实现。
(1) 给出满足依赖倒转原则的设计类图
(2) 用JAVA代码实现
定义一个接口
public interface safeTicket {
int ticket_price = 100;//票价 (可任意设置)
void pay();//模拟支付方式
}
定义用户角色
class PayService{
public void payService(safeTicket safe){
safe.pay();//实现支付
}
}
class Student implements safeTicket{
@Override
public void pay() {
System.out.println("学生凭学生证可享受票价8折优惠。"+"支付:"+ticket_price*0.8);
}
}
class Child implements safeTicket{
@Override
public void pay() {
System.out.println("年龄在10周岁及以下的儿童可享受每张票减免10元的优惠"+"支付:"+(ticket_price-10));
}
}
class VIP implements safeTicket{
@Override
public void pay() {
System.out.println("影院VIP用户除享受票价半价优惠外还可进行积分"+"支付:"+(ticket_price/2));
}
}
class solider implements safeTicket{
@Override
public void pay() {
System.out.println("军人免费");
}
}
class elderly implements safeTicket{
@Override
public void pay() {
System.out.println("60岁以上老人半价"+"支付:"+ticket_price/2);
}
}
class common implements safeTicket{
@Override
public void pay() {
System.out.println("支付:"+ticket_price);
}
}
测试
public class PayTest{
//测试售票系统
public static void main(String[] args) {
PayService payService = new PayService();
payService.payService(new Child());
}
}