一、前言:
二、代码实现:
1、客户端调用
//准备用途苹果盒代替
Orange orange = new Orange("peter",100);
OrangeBag bag = getBag2();
orange.draw();
orange.pack(bag);
客户端调用方法
private static OrangeBag getBag2(){
//准备用途苹果盒代替
AppleBag appleBag = new AppleBag();
//把苹果盒适配成桔子包装盒
OrangeBag orangeBag = new OrangeBagAdapter(appleBag);
return orangeBag;
}
2、OrangeBagAdapter
public class OrangeBagAdapter extends OrangeBag {
private final AppleBag appleBag;
public OrangeBagAdapter(AppleBag appleBag) {
this.appleBag = appleBag;
}
@Override
public void pack() {
appleBag.pack();
}
}
3、OrangeBag
public class OrangeBag implements Bag {
@Override
public void pack() {
Log.d("LUO","===========使用网兜包装");
}
}
4、AppleBag
public class AppleBag implements Bag {
@Override
public void pack() {
Log.d("LUO","===========使用纸箱包装");
}
}
5、Orange
public class Orange implements Fruit {
private String name = "";
private int price = 70;
public Orange(String name, int price) {
this.name = name;
this.price = price;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
@Override
public int price() {
return price;
}
@Override
public void draw() {
Log.d("LUO", "砂糖橘");
}
@Override
public int accept(Visit visit) {
return visit.sell(this);
}
//新增
public void pack(OrangeBag bag){
bag.pack();
}
}