第九次实验

文章讲述了老张如何改进商场打折系统,引入Discount接口以适应新的促销策略,包括VIP差异化的打折和赠品策略。同时,老张还探讨了Comparable接口在Integer等数据类型的实现,并要求用此接口改进CleverSorter排序器。此外,他还关注到Comparator接口,期望进一步优化排序设计。
摘要由CSDN通过智能技术生成

第九次实验

1. 商场打折程序升级了

老张主持的商场管理系统的打折算法部分经过上次的设计已日趋完善,目前需求方期望打折部分升级适应商场新的经营理念。在经营过程中,为了增加顾客的吸引力,商场开发出一些促销策略,其中一种策略是针对女性商品在打折促销的同时增加赠品,提升顾客粘附力,不同的vip不仅打折程度不同其赠品力度也不一样,大致规则如下图:
在这里插入图片描述
赠品fen分类如下图:
在这里插入图片描述
考虑到Discount纯抽象的特性,设计成接口更适合设计规则,于是老张将Discount修改成下面的接口形式:

public interface Discount {
	default String getInfo(double price) {
		double np=getPrice(price);
		PresentCampaign pc=selectPresentCapaign(price);
		return String.format("原价%.2f,打折后%.2f,给您使用%s包装,赠您一件精美饰品%s", price,np,pc.getBox(),pc.getOrnament());
	}
	//获得打折后的价格
	double getPrice(double price);
	//获得不同的赠品策略
	PresentCampaign selectPresentCapaign(double price);
}

你能否将原来的打折算法修改为实现Discount接口呢?

2. 聪明的排序器续篇

老张完成了CleverSorter之后受到了大家的交口称赞,但努力的老张是不会停下向前探索的脚步滴,于是在某一天老张发现了java预定义的一个接口:

public interface Comparable<T>{
	int compareTo(T o);
}

经过一番研究,java包装的数据类Integer、Double、Float等均已实现Compare接口,该接口定义了实现比较器的类的规约,于是老张希望刚入职的你着手将CleverSorter使用该接口完成,你能完成这个任务吗?
新的测试程序已经给出来了,写完后看看能不能通过这段代码的测试:

public static void main(String[] args) {
	Integer [] data= {11,3,25,8,9,36,13,29,10,50};
	CleverSorter<Integer> cs=new CleverSorter<Integer>();
	cs.sort(data);
	for(Integer i:data)System.out.println(i);
	Cat[] cats=new Cat[10];
	cats[0]=new Cat(11,50);
	cats[1]=new Cat(3,10);
	cats[2]=new Cat(25,29);
	cats[3]=new Cat(8,13);
	cats[4]=new Cat(9,36);
	cats[5]=new Cat(36,9);
	cats[6]=new Cat(13,8);
	cats[7]=new Cat(29,25);
	cats[8]=new Cat(10,3);
	cats[9]=new Cat(50,11);
	CleverSorter<Cat> cs2=new CleverSorter<Cat>();
	cs2.sort(cats);
	for(Cat c:cats)System.out.println(c);
} 

执着的老张继续探索比较器接口在java中的定义,于是他又发现了Comparator接口,这个接口更类似于老张当初的抽象类设计,他期望你再按照Comparator接口的定义完成以下你的设计,你能做到吗?(只需要实现Comparator的compare接口即可,Comparator的其他方法不需要考虑)
新的测试代码:

public static void main(String[] args) {
		Integer [] data= {11,3,25,8,9,36,13,29,10,50};
		CleverSorter<Integer> cs=new CleverSorter<Integer>(new IntegerComparator());
		cs.sort(data);
		for(Integer i:data)System.out.println(i);
		Cat[] cats=new Cat[10];
		cats[0]=new Cat(11,50);
		cats[1]=new Cat(3,10);
		cats[2]=new Cat(25,29);
		cats[3]=new Cat(8,13);
		cats[4]=new Cat(9,36);
		cats[5]=new Cat(36,9);
		cats[6]=new Cat(13,8);
		cats[7]=new Cat(29,25);
		cats[8]=new Cat(10,3);
		cats[9]=new Cat(50,11);
		CleverSorter<Cat> cs2=new CleverSorter<Cat>(new CatHeightComparator());
		cs2.sort(cats);
		for(Cat c:cats)System.out.println(c);
	} 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值