设计模式__适配器模式

适配器模式:把一个类的接口变换成客户端所期待的另一种接口,从而使的原本因接口不匹配而无法在一起工作的两个类能够在一 起工作。

使用场景:系统需要现有的类,而此类的接口不符合系统的需要,即接口不兼容;

                  想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作;

                  需要一个统一的输出接口,而输入端的类型不可预知; 

适配器模式 分为 类适配 和 对象适配 ,接下来我们看看两者如何实现。

场景:超市进了一批干果和水果,店员需要进行统计产地,在每个商品的标签是展示给客户。

          店员统计类:

class ProductNotes {
        //记录该产品的产地
        String place;

        public void setPlace(Fruit fruit) {
            this.place = fruit.place();
        }

    }

          店员只需要把商品对象给了统计系统就好,系统就会自己取好产品产地。但是有一点,该店之前是水果店,统计系统只能识别水果接口的产地,现在店面加大了,出售干果了,我们就无法输入了。先看一下干果类:

class Peanut implements Dryfruit{

        @Override
        public String place() {
            return "shangdong";
        }

    }

          现在我们需要把干果也可以输入系统中怎么办?先看看类适配器

class Peanut implements Dryfruit, Fruit {

        @Override
        public String place() {
            return "shangdong";
        }

    }

          上面是花生类,在它的类中实现水果接口,可以输入统计系统了,这就是类适配。接下来看看对象适配

class PeanutNotes implements Fruit {

        private Dryfruit dryfruit;

        public PeanutNotes(Dryfruit dryfruit) {
            this.dryfruit = dryfruit;
        }

        @Override
        public String place() {
            return dryfruit.place();
        }
    }

           这就是对象适配模式,看起来是不是特像代理模式。其实,就是代理模式。代理模式在很多模式中都会有体现。

   对象适配模式的优点:1. 不会像类适配一样使得类中实现本不属于自己的接口(如:花生类实现水果接口其实不合适的)

                                       2. 类适配模式修改了之前代码,没有对修改关闭。

                           缺点: 需要新增类,增加了项目管理成本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值