2018-02-27学习小结 - 抽象类与接口5

回顾

13.2.2 接口的使用原则

学习小结

13.2.3 接口的作用——制定标准

接口是标准,而标准指的是,各方共同遵守的一个守则。

范例:

package com.Javastudy2;

/**
 * @author Y.W.
 * @date 2018年2月27日 下午8:43:57
 * @Description TODO 接口制定标准
 */
public class P340 {

    public static void main(String[] args) {
        Computer com = new Computer();
        com.plugin(new Print()); // 在电脑上使用打印机
        com.plugin(new Flash()); // 在电脑上使用U盘
    }

}

interface USB { // 定义USB接口的标准
    public void work(); // 拿到USB设备就表示要进行工作
}

class Computer {
    public void plugin(USB usb) {
        usb.work(); // 按照固定的方式进行工作
    }
}

class Print implements USB { // 打印机实现了USB接口标准
    public void work() {
        System.out.println("打印机用USB接口,连接开始工作");
    }
}

class Flash implements USB { // U盘实现了USB接口标准
    public void work() {
        System.out.println("U盘使用USB接口,连接开始工作");
    }
}

运行结果:

2018-02-27学习小结 - 抽象类与接口5_第1张图片
运行结果

13.2.4 接口的作用——工厂设计模式(Factory)

范例:

package com.Javastudy2;

/**
 * @author Y.W.
 * @date 2018年2月27日 下午10:02:19
 * @Description TODO 接口的作用
 */
public class P342_13_11 {

    public static void main(String[] args) {
        Fruit f = new Apple();
        f.eat();
    }

}

interface Fruit { // 定义一个水果标准
    public void eat(); // 吃
}

class Apple implements Fruit {
    public void eat() {
        System.out.println("吃苹果。");
    }
}

class Orange implements Fruit {
    public void eat() {
        System.out.println("吃橘子。");
    }
}

运行结果:

2018-02-27学习小结 - 抽象类与接口5_第2张图片
运行结果

把上面的代码改工厂模式,范例:

package com.Javastudy2;

/**
 * @author Y.W.
 * @date 2018年2月28日 上午07:30:19
 * @Description TODO 接口的工厂模式
 */
public class P342_13_12 {

    public static void main(String[] args) {
        Fruit1 f = Factory.getlnstance("orange"); // 初始化参数
        f.eat();
    }

}

interface Fruit1 { // 定义一个水果标准
    public void eat(); // 吃
}

class Apple1 implements Fruit1 {
    public void eat() {
        System.out.println("吃苹果。");
    }
}

class Orange1 implements Fruit1 {
    public void eat() {
        System.out.println("吃橘子。");
    }
}

class Factory { // 此类不需要维护属性状态
    public static Fruit1 getlnstance(String className) {
        if ("apple".equals(className)) {
            return new Apple1();
        }
        if ("orange".equals(className)) {
            return new Orange1();
        }
        return null;
    }
}

运行结果:

2018-02-27学习小结 - 抽象类与接口5_第3张图片
运行结果

在开发代码中,遇见了取得接口对象实例的操作,都应该采用工厂设计模式,避免接口与具体的子类耦合问题。

思考

接口的具体使用还是比较多变的,注意事项也很多。下一篇代理设计模式。

你可能感兴趣的:(2018-02-27学习小结 - 抽象类与接口5)