java基础【工厂方法】

64 阅读1分钟

本文已参与「新人创作礼」活动,一起开启掘金创作之路。

对象的创建不仅可以通过new,还可以通过方法获取,另外反序列化和反射也可以。工厂模式解决主要问题是,用一种简单的办法获取对象。

package com.hike.javase.interfacetest;

/**
 * 工厂模式:
 *      对象的创建复杂,甚至无法完成,通过工厂方法获取对象。
 *
 * 特点:
 *      不需要知道它所在的类,见工厂的应用。
 *      进一步老师学生类中都包含work方法,可定义一个Worker接口,
 *      这样在获取对象时,不用指定Teacher或者是Student,直接Worker搞定。
 *      
 * 接口用法总结:
 *      通过接口可以实现不相关类之间的相同行为,而不需要知道这些类之间的层次关系。
 *      可以实现多个类需要实现的方法,一般用于定义对象的扩张功能。
 *      接口主要用来定义规范,解除耦合关系。
 *      
 * 在开发中:
 *      一个类不要去继承一个已经实现好的类,要么继承抽象类,要么继承接口。
 * 
 * 接口具有桥梁的作用:
 *      将用户和子类连接起来,JDBC其实就是一个接口,使用JDBC可以写出跨数据库的程序。
 */
interface Worker{
    void work();
}
class Teacher implements Worker{
    public void work(){
        System.out.println("老师在上课");
    }
}

class Student implements Worker{
    public void work(){
        System.out.println("学生在学习");
    }
}

class Factory{
    public static Worker getTeacher(){
        return new Teacher();
    }
    public static Worker getStudent(){
        return new Student();
    }
}

public class FactoryTest {
    public static void main(String[] args) {
        //Runtime runtime = Runtime.getRuntime(); //通过方法获取对象
        Worker worker = Factory.getTeacher(); //工厂的应用
        worker.work();

        worker = Factory.getStudent();
        worker.work();
    }
}