设计模式之-适配器模式

适配器模式:其实就是把一个实例类转换成另外的一个接口的类型的,适配器让原本接口不兼容的类可以合作无间。

 

适配器是使用组合和继承的方式,得到兼容的功能.耦合性还是比较高的.

 

请看例子:

 

/**狼的接口
 * @author zhangke
 *
 */
interface Wolf{
    void say();
    void run();
}


 

//狼的具体实现类
class WhiteWolf implements Wolf{

    @Override
    public void say() {
        System.out.println("wowowo,这个狼在叫唤");
        
    }

    @Override
    public void run() {
        System.out.println("跳一次是60米");
    }
    
}

 

/**人的接口
 * @author zhangke
 *
 */
interface Person{
    void say();
    void run();
}
//黄种人的具体
class YellowPerson implements Person{

    @Override
    public void say() {
        System.out.println("黄种人,主要分布在亚洲的,我们就是黄种人");
    }

    @Override
    public void run() {
        System.out.println("跳一次是10米");
    }
}

 

对已经存在的人和狼来说他们之间没有任何的关系,那么问题来了,狼人怎么办?他既是狼又是人,身兼两者的特点,但是首先,他是个人.

所以我们要做的就是把这个人看起来像狼就行了.

我们需要实现狼的接口

我们来制造一个狼人出来,看着像人,又有狼的特性

//一个狼人的具体实现类

class WolfPerson implements Wolf{

//需要得到一个狼人需要一个具体的人作为参数传递进来的.

   private Person YellowPerson;
    
    public WolfPerson(Person yellowPerson) {
        super();
        YellowPerson = yellowPerson;
    }

    @Override
    public void say() {
        //还是会说人话的
        yellowPerson.say();
    }

    @Override
    public void run() {
        for (int i = 0; i < 5; i++) {
            //狼人跳一次相当于人跳5次了
            yellowPerson.run();
        }
    }



测试方法:

public static void main(String[] args) {
        //白狼
        WhiteWolf whiteWolf = new WhiteWolf();
        whiteWolf.say();
        whiteWolf.run();
        System.out.println("~~~~~");
        //黄种人
        YellowPerson person = new YellowPerson();
        person.say();
        person.run();
        System.out.println("~~~~~");
        //狼人
        WolfPerson wolfPerson = new WolfPerson(person);
        wolfPerson.say();
        wolfPerson.run();
    }

 

其实这个模式还是特别简单的,也没有什么好说的了.再见

 

Java Framework,欢迎各位前来交流java相关
QQ群:965125360

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值