GOF23-适配器模式

适配器模式,有一个接口需要实现,但是我们现成的对象都不满足,需要加一层适配器来进行适配。
模式总体分三种:默认适配器模式,对象适配器模式,类适配器模式。
对象适配器:

public interface Duck {
    public void quack(); // 鸭的呱呱叫
    public void fly(); // 飞
}

public interface Cock {
    public void gobble(); // 鸡的咕咕叫
    public void fly(); // 飞
}

public class WildCock implements Cock {
    public void gobble() {
        System.out.println("咕咕叫");
    }
    public void fly() {
        System.out.println("鸡也会飞哦");
    }
}

鸭接口有 fly() 和 quare() 两个方法,鸡 Cock 如果要冒充鸭,fly() 方法是现成的,但是鸡不会鸭的呱呱叫,没有 quack() 方法。这个时候就需要适配了:

public class CockAdapter implements Duck {

    Cock cock;
    // 构造方法中需要一个鸡的实例,此类就是将这只鸡适配成鸭来用
      public CockAdapter(Cock cock) {
        this.cock = cock;
    }

    // 实现鸭的呱呱叫方法
    @Override
      public void quack() {
        // 内部其实是一只鸡的咕咕叫
        cock.gobble();
    }

      @Override
      public void fly() {
        cock.fly();
    }
}

调用

public static void main(String[] args) {    
	// 有一只野鸡      
	Cock wildCock = new WildCock();      
	// 成功将野鸡适配成鸭      
	Duck duck = new CockAdapter(wildCock);      
	...
}

类适配器
最新形象的例子就是手机充电器,手机的充电器即吧220v交流电适配成为手机充电所需的5v直流电

public class AlternatingCurrent220{
	//220v的输出
	public int out220v(){
		return 220v;
	}
}

public interface DirectCurrent5{
	int out5v();
}

//创建能输出5V的适配器
public class adapter extends AlternatingCurrent220 implements DirectCurrent5{
		@Override
		public int out5v(){
			return out220v()/44;
		}
}

public class phone{
	public void chongdian(DirectCurrent5 directCurrent5){
		//获得5v直流电
		directCurrent5.out5v();
	}
}

这样,手机就能用上5v的充电电压了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值