适配器模式

在设计模式中,适配器模式(英语:adapter pattern)有时候也称包装样式或者包装(wrapper)。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一起工作的类能在一起工作,做法是将类自己的接口包裹在一个已存在的类中。

我们平时创建线程的时候,会创建一个Runnable接口来实现run方法,同时把接口传进Thread中

        Thread thread = new Thread(runnable);
        Runnable runnable = new Runnable() {
            @Override
            public void run() {

            }
        };

但假如我们传入另一个同样只有run方法的Callable接口就会编译报错,确实,人家明明要求一个Runnable接口,Callable接口又不是Runnable接口的子接口,当然会报错。但工作中我们可能会经常遇到这种情况,我们有的接口和方法要求的接口不一样,这时候就需要用到适配器模式了

        Thread thread = new Thread(callable);
        Callable callable = new Callable() {
            @Override
            public Object call() throws Exception {
                return null;
            }
        };

适配器首先要实现需要的接口,在上面指的就是Runnable接口,作为Runnable接口的子接口,它肯定是符合要求的,并且,适配器要持有目标接口,就是上面的Callable接口,这里一般通过构造器注入进去。那么在Runnable接口的方法内,我们就可以把方法的实现指向真正的Callable接口!Nice!所以,面向接口编程的好处真的是方方面面,持有高层接口可以代理极大的灵活性,而且把各种接口组合起来也很容易。如果一个方法接收的是某个具体的子类,那么实现适配器会麻烦的多,毕竟Java是单继承的。果然!计算机的问题,加一个中间对象就好了!

你可能感兴趣的:(设计模式)