java设计模式进阶_adapter

本文介绍了一个关于适配器模式的实际应用案例。通过GnomeEngineer类将GoblinGlider设备的操作适配为Engineer接口所期望的形式,使得GnomeEngineeringManager能够间接地操作设备。展示了类适配器与对象适配器的区别。

这里写图片描述

//
//
//  Generated by StarUML(tm) Java Add-In
//
//  @ Project : Untitled
//  @ File Name : Engineer.java
//  @ Date : 2016/8/25
//  @ Author : 
//
//



/*
 * 引擎能操作设备
 */
public interface Engineer {
    public void operateDevice();
}


//
//
//  Generated by StarUML(tm) Java Add-In
//
//  @ Project : Untitled
//  @ File Name : GnomeEngineeringManager.java
//  @ Date : 2016/8/25
//  @ Author : 
//
//



/*
 * GnomeEngineeringManager 使用引擎去操作设备
 */
public class GnomeEngineeringManager implements Engineer {

    private Engineer engineer;

    public GnomeEngineeringManager() {
        engineer = new GnomeEngineer();
    }

    public void operateDevice() {
        engineer.operateDevice();
    }
}

//
//
//  Generated by StarUML(tm) Java Add-In
//
//  @ Project : Untitled
//  @ File Name : GnomeEngineer.java
//  @ Date : 2016/8/25
//  @ Author : 
//
//




public class GnomeEngineer implements Engineer {

    private GoblinGlider glider = null;

    public GnomeEngineer() {
        glider = new GoblinGlider();
    }

    public void operateDevice() {
        glider.attachGlider();
        glider.gainSpeed();
        glider.takeOff();
    }
}

//
//
//  Generated by StarUML(tm) Java Add-In
//
//  @ Project : Untitled
//  @ File Name : GoblinGlider.java
//  @ Date : 2016/8/25
//  @ Author : 
//
//



/*
 * 设备类
 */
public class GoblinGlider {

    public void attachGlider() {
        System.out.println("Glider attached.");
    }

    public void gainSpeed() {
        System.out.println("Gaining speed.");
    }

    public void takeOff() {
        System.out.println("Lift-off!");
    }
}


/*
 * 有两个变化属于适配器模式:类适配器实现了适配器的接口但是对象适配器使用组合
 * 包含适配对象.这个例子使用对象适配方法
 * 
 * 适配器(GnomeEngineer)转换接口到目标类(GoblinGlider)到适当的期望的通过使用者
 * (GnomeEngineeringManager).
 */
public class App {

    public static void main(String[] args) {
        Engineer manager = new GnomeEngineeringManager();
        manager.operateDevice();
    }

}

/*
Glider attached.
Gaining speed.
Lift-off!
*/
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值