内容简介:场景:水果店卖有橘子和苹果,橘子用橘子包装盒,苹果用苹果包装盒,顾客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设计模式之模板方法模式和建造者模式
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
写给大家看的设计书(第3版)
[美] Robin Williams / 苏金国、刘亮 / 人民邮电出版社 / 2009-1 / 49.00元
这本书出自一位世界级设计师之手。复杂的设计原理在书中凝炼为亲密性、对齐、重复和对比4 个基本原则。作者以其简洁明快的风格,将优秀设计所必须遵循的这4 个基本原则及其背后的原理通俗易懂地展现在读者面前。本书包含大量的示例,让你了解怎样才能按照自己的方式设计出美观且内容丰富的产品。 此书适用于各行各业需要从事设计工作的读者,也适用于有经验的设计人员。一起来看看 《写给大家看的设计书(第3版)》 这本书的介绍吧!