适配器模式 - 我有金卡,你有麽?

1 介绍


续上篇《大/小白祝大家元旦Glücklich》

小白:老板,这件衣服多少钱哇?

老板:这件衣服500大洋。

小白:这麽贵😥。

Acey:等等小白,我有会员卡哦。

小白:这张卡....我服,,ԾㅂԾ,,。

老板:小鹏友,这张是钻石会员,可以打9折哦。

小白:那就是450块咯,瞬间省了50大洋,谢谢大哥。🙃

Acey:木事木事。其实会员卡和适配器模式还是比较类似的啦。

适配器模式:Adapter模式是构造型模式的一种,可以改变已存在类(或外部组件)的接口形式。

小白:这个样子呀,会员卡可以有好几个等级,这就是适配嘛?

Acey:对呢,会员卡就是对衣服售价(外部组件)功能的一个扩充,而普通会员,高级会员就是对会员卡的一个适配,当然商家也可以继续添加钻石会员等。

小白:这样我们就可以拿着会员卡打相应的折扣啦。

2 实现


一步:创建衣服

Clothes.class

public class Clothes {
    //衣服价钱
    private Integer price = 500;
    
    public void sale(){
        System.out.println("衣服原价:"  + price);
    }
    
    public Integer getPrice() {
        return price;
    }
}

二步:创建VIP适配器

Adapter.class

public class Adapter {
    private Clothes clothe;
    
    //获取衣服信息
    public Adapter(Clothes clothe) {
        this.clothe = clothe;
    }
    
    //一级会员
    public void VIP1(){
        this.clothe.sale();
        System.out.println("您的卡为VIP1,打9折,打折后的价格为:" + 0.9 * this.clothe.getPrice());
    }
    
    //二级会员
    public void VIP2(){
        this.clothe.sale();
        System.out.println("您的卡为VIP2,打7折,打折后的价格为:" + 0.7 * this.clothe.getPrice());
    }
}

三步:测试

MainClass.class

public class MainClass {
    public static void main(String[] args) {
        Adapter adapter = new Adapter(new Clothes());
        //打折
        adapter.VIP1();
    }
}
运行结果

Acey:这样实现后可以将目标类和适配器解耦,一方需要改动时另一方无需改动。而且一个适配器可以适配多个目标类,即一张会员卡购买商场内的东西都是打折扣的。当然了也可以多个适配器同时适配一个目标类。

.

喜欢的话戳一下喜欢呗。
有什么建议的话希望大家能在下方回复😋
上一篇:《大/小白祝大家元旦Glücklich》
下一篇:《解释器模式 - 明天考试,戳不辍进来你自己看着办》(待更)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容