如果水果店的橘子包装盒用完了,苹果包装盒有多余,需要代替一下怎么做。
橘子包装盒用完了
苹果包装盒很有可能不太适合装橘子,有可能挤压碰撞等,需要做一些操作来适应橘子,这时候就需要适配一下。
适配一下包装盒
适配器模式
结构关系 private static OrangeBag getBag2(){
//准备用途苹果盒代替
AppleBag appleBag = new AppleBag();
//把苹果盒适配成桔子包装盒
OrangeBag orangeBag = new OrangeBagAdapter(appleBag);
return orangeBag;
}
public static void main(String[] args){
Orange orange = new Orange("peter",100);
OrangeBag bag = getBag2();
orange.pack(bag);
}
/**
* 桔子包装适配器
*/
public class OrangeBagAdapter extends OrangeBag {
private AppleBag appleBag;
public OrangeBagAdapter(AppleBag appleBag){
this.appleBag = appleBag;
}
@Override
public void pack() {
appleBag.pack();
}
}
适用场景
原有功能无法扩展,临时组合的场景
总结
通过添加一个适配类,组合原有类,来进行功能转换
适配器模式其实是一个结构设计不合理的补救措施
网友评论