内容简介:场景:水果店卖有橘子和苹果,橘子用橘子包装盒,苹果用苹果包装盒,顾客A来买橘子,但是没有橘子包装盒了,则用苹果包装盒暂时替代一下。测试代码如下:main方法里面,new一个橘子,再获取一个橘子包装实例。如今橘子包装没了,用苹果包装代替一下。
场景:水果店卖有橘子和苹果,橘子用橘子包装盒,苹果用苹果包装盒,顾客A来买橘子,但是没有橘子包装盒了,则用苹果包装盒暂时替代一下。
/** * 桔子 * */ public class Orange implements Fruit { private String name = ""; private int price = 70; public Orange(String name,int price){ this.price = price; this.name = name; } public void pack(OrangeBag bag){ bag.pack(); } @Override public int price() { return price; } @Override public void draw() { System.out.print("砂糖桔"); } public int accept(Visit visit){ return visit.sell(this); } public void setPrice(int price) { this.price = price; } } /** * 桔子包装 * */ public class OrangeBag implements Bag { @Override public void pack() { System.out.print("--桔子使用网兜包装"); } } /** * 苹果包装 * Created by Peter on 10/9 009. */ public class AppleBag implements Bag { @Override public void pack() { System.out.print("--苹果使用纸箱包装"); } } /** * 水果接口 */ public interface Fruit { int price(); void draw(); int accept(Visit visit); } /** * 包装接口 */ public interface Bag { void pack(); }
测试代码如下:main方法里面,new一个橘子,再获取一个橘子包装实例。
如今橘子包装没了,用苹果包装代替一下。
public class AdapterClient { public static void main(String[] args){ Orange orange = new Orange("peter",100); OrangeBag bag = getBag2(); orange.pack(bag); } /** * 取桔子包装 * @return */ // private static OrangeBag getBag(){ // OrangeBag bag = new OrangeBag(); // return bag; // } private static OrangeBag getBag2(){ //准备用途苹果盒代替 AppleBag appleBag = new AppleBag(); //把苹果盒适配成桔子包装盒 OrangeBag orangeBag = new OrangeBagAdapter(appleBag); return orangeBag; } } /** * 桔子包装适配器 */ public class OrangeBagAdapter extends OrangeBag { private AppleBag appleBag; public OrangeBagAdapter(AppleBag appleBag){ this.appleBag = appleBag; } @Override public void pack() { appleBag.pack(); } }
适配器模式结构图:
用法:
- 1.OrangeBagAdapter继承OrangeBag,同时组合AppleBag对象(引入成员变量),使OrangeBag和AppleBag产生关联。
- 2.当OrangeBag目标方法被调用时,OrangeBagAdapter转调AppleBag的对象方法
备注:OrangeBag和AppleBag都是已有类,是系统已有方法。整个过程只需要新增一个适配器类,去充当OrangeBag的实现。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 设计模式——订阅模式(观察者模式)
- 设计模式-简单工厂、工厂方法模式、抽象工厂模式
- java23种设计模式-门面模式(外观模式)
- 设计模式-享元设计模式
- Java 设计模式之工厂方法模式与抽象工厂模式
- JAVA设计模式之模板方法模式和建造者模式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。