预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共22页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

5.2.某电影院售票系统为不同类欧阳化创编2021.02.06 型的用户提供了不同的电影票 (CinemaTicket)打折方式 (Discount),学生凭学生证可 享受8折优惠 (StudentDiscount),儿童可享 受减免10元的优惠 (ChildrenDiscount),VIP用 户除享受半价优惠外还可以进 行积分(VIPDiscount)。选择一 种合适的设计模式来设计该系 欧阳化创编2021.02.06 统。(策略模式欧阳化创编)2021.02.06 时间:2021.02.06创作:欧阳化 //电影票类:环境类 classMovieTicket { privatedoubleprice; privateDiscountdiscount; publicvoidsetPrice(doubleprice) { this.price=price; } publicvoidsetDiscount(Discountdiscount) { this.discount=discount; } publicdoublegetPrice() { returndiscount.calculate(this.price); } } //折扣类:抽象策略类 interfaceDiscount { publicdoublecalculate(doubleprice); 欧阳化创编2021.02.06 欧阳化创编2021.02.06 } //学生折扣类:具体策略类 classStudentDiscountimplementsDiscount { publicdoublecalculate(doubleprice) { returnprice*0.8; } } //儿童折扣类:具体策略类 classChildrenDiscountimplementsDiscount { publicdoublecalculate(doubleprice) { returnprice-10; } } //VIP会员折扣类:具体策略类 classVIPDiscountimplementsDiscount { publicdoublecalculate(doubleprice) { System.out.println("增加积分!"); returnprice*0.5; } } 欧阳化创编2021.02.06 欧阳化创编2021.02.06 //客户端测试类 classClient { publicstaticvoidmain(Stringargs[]) { MovieTicketmt=newMovieTicket(); mt.setPrice(50.00); doublecurrentPrice; Discountobj; obj=newStudentDiscount();可通过配置文件实现// mt.setDiscount(obj); currentPrice=mt.getPrice(); System.out.println("折后价为:"+currentPrice); System.out.println("---------------------------------"); obj=newVIPDiscount(); mt.setDiscount(obj); currentPrice=mt.getPrice(); System.out.println("折后价为:"+currentPrice); } } publicinterfaceCount{ publicabstractvoiddiscount(doublea); } publicclassCiTicket{ privateCountdisobj; publicvoiddiscount(doublea){ 欧阳化创编2021.02.06 欧阳化创编2021.02.06 disobj.discount(a); } publicvoidsetdisobj(Countdisobj){ this.disobj=disobj; } } publicclassStTicketimplementsCount{ privatedoublea; publicvoiddiscount(doublea){ System.out.println("原价为"+a); this.a=a*0.8; System.out.println("学生票的票价为原价的8折:"+this.a); } } publicclassVTi