适配器模式
适配器模式:电子商务网站有购物车的功能,可以把挑选的东西加入购物车,可以把挑选的东西加入购物车、删除或者更改购买数量,并对多个商品进行一次性结算。为了实现订单功能,系统基于MVC模式,设计了一个下订单的页面index.jsp,商品信息管理类productioninfo,购物车信息管理类ShopCart。系统运行一段时间后,需求发生变化,不仅需要原有购物车的功能,还希望在客户下完订单后有一个相关商品的推荐功能,利用适配器模式进行设计,绘制选择模式的结构图,并绘制该案例的类图,并编写代码演示结果
接口代码
/**
* @author zzw
* @create 2020/11/22-10:40
* 目标接口,也是标准接口
*/
public interface zzw34Target {
public void request();
}
新购物车代码
/**
* @author zzw
* @create 2020/11/22-10:45
*/
public class zzw34NewShopCar implements zzw34Target {
private zzw34Recommended recommended;
public zzw34NewShopCar(zzw34Recommended recommended){
this.recommended=recommended;
}
@Override
public void request() {
//使用委托的方式完成特殊功能
this.recommended.recommended();
}
}
原始购物车预览
/**
* @author zzw
* @create 2020/11/22-10:43
* 具体目标类,只具有普通功能,原购物车类
*/
public class zzw34OriginakShopCar implements zzw34Target {
@Override
public void request() {
System.out.println("购物车拥有删除或者更改购买数量,并对多个商品进行一次性结算功能");
}
}
适配器类
/**
* @author zzw
* @create 2020/11/22-10:49
* 需要适配的类,推荐功能
*
*
*/
public class zzw34Recommended {
public void recommended(){
System.out.println("新购物车拥有删除或者更改购买数量,并对多个商品进行一次性结算并且有相关商品的推荐");
}
}
测试类
/**
* @author zzw
* @create 2020/11/22-10:55
*/
public class zzw34Test {
public static void main(String[] args) {
//使用原购物车
zzw34Target originakShopCar=new zzw34OriginakShopCar();
originakShopCar.request();
//使用新购物车,也就是适配器类
zzw34Target newShopCar=new zzw34NewShopCar(new zzw34Recommended());
newShopCar.request();
}
}
运行结果:
购物车拥有删除或者更改购买数量,并对多个商品进行一次性结算功能
新购物车拥有删除或者更改购买数量,并对多个商品进行一次性结算并且有相关商品的推荐