随笔-46  评论-64  文章-2  trackbacks-0
Adapter模式
使用Adapter模式的目的:把一个类的接口转换成客户端需要的接口。
适用场合:
   当你想使用一个现有类的功能,但是它的接口不能满足你的需要
   当你想创建一个循环使用的类,用于使一些没有相互联系的类,或者是未知的将来会引进的类之间协调合作完成某些功能。也就是说,这些类不必要具备一致的接口
   当你要使用数个现有的的子类,但是要对每一个子类进行接口的改写变得很不切实际。
 
具体的例子
   变压器(Adapter),变压器把一种电压变换成另一种电压。美国的生活用电电压是110V,而中国的电压是220V。如果要在中国使用美国电器,就必须有一个能把220V电压转换成110V电压的变压器。这个变压器就是一个Adapter。
 
客户买回了美国的电器Machine,工作电压110V,电器插头为3相(阴、阳、地级),所以需要一个电压和相级的转换器或者说是适配器来使这个Machine能在中国使用。
一、类的Adapter模式
package Adapter;

interface 电器需要使用
{
    
public void 两相插口();
    
public void 电压_110V();
}


class 中国_供电
{
    
protected int v;
    
public 中国_供电()
    
{
        v
=220;
        System.out.println(
"中国供电提供的电压是:" +v+"V");
    }

    
//返回中国电压的值
    public int voltage()
    
{
        
return v;
    }

}

class 变压器_相位转换器 extends 中国_供电 implements 电器需要使用 
{

    
public void 两相插口() {
        System.out.println(
"变压器_相位转换器——提供三相到两相转换操作,返回两相插口");
        
    }


    
public void 电压_110V() {
        v 
= this.voltage()/2;
        System.out.println(
"变压器_相位转换器——转换后提供电压为:"+v+"V");
    }

    
}


public class ClassAdapter {

    
public static void main(String[] args) {
        变压器_相位转换器 device 
= new 变压器_相位转换器();
        
        device.电压_110V();
        device.两相插口();
        
        System.out.println(
"经过变压器_相位转换器的包装(Warpper),在美国买来的电器能够使用啦!^0^");

    }


}


二、对象的Adapter模式
package Adapter;

interface 电器需要使用_a
{
    
public void 两相插口();
    
public void 电压_110V();
}


class 中国_供电_a
{
    
protected int v;
    
public 中国_供电_a()
    
{
        v
=220;
        System.out.println(
"中国供电提供的电压是:" +v+"V");
    }

    
//返回中国电压的值
    public int voltage()
    
{
        
return v;
    }

}

class 变压器_相位转换器_a implements 电器需要使用_a 
{
    中国_供电_a supply 
= new 中国_供电_a();

    
public void 两相插口() {
        System.out.println(
"变压器_相位转换器——提供三相到两相转换操作,返回两相插口");
        
    }


    
public void 电压_110V() {
        supply.v 
= supply.voltage()/2;
        System.out.println(
"变压器_相位转换器——转换后提供电压为:"+supply.v+"V");
    }

    
}


public class ObjectAdapter {

    
    
public static void main(String[] args) {
        变压器_相位转换器_a device 
= new 变压器_相位转换器_a();
        
        device.电压_110V();
        device.两相插口();
        
        System.out.println(
"经过变压器_相位转换器的包装(Warpper),在美国买来的电器能够使用啦!^0^");

    }


}


posted on 2006-02-24 21:13 jht 阅读(1003) 评论(0)  编辑  收藏

只有注册用户登录后才能发表评论。


网站导航: