本文已参与「新人创作礼」活动,一起开启掘金创作之路。
对象的创建不仅可以通过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();
}
}