接口应用之工厂方法的设计模式
定义一个用于创建对象的接口,让子类去决定实例化那个类,FactoryMethod使一个类实例化延迟到子类。
适用性
- 1、当一个类不知道它所必须创建的对象的类的时候;
- 2、当一个类希望由它的子类来指定它所创建的对象的时候;
- 3、当类将创建的对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息化的时候。
- 创建一个接口 ,让其具有一个work方法,供学生和老师来实现;
interface Work {
public void work();
}
- 创建两个实现Work接口的实现类 让其重写work方法,往里面添加功能;
class StudentWork implements Work{
@Override
public void work() {
System.out.println("学生在学习...");
}
}
class TeacherWork implements Work{
@Override
public void work() {
System.out.println("老师在学习...");
}
}
- 再创建一个IWorkFactory工厂模式的接口 ,让其有一个Work接口的返回值得方法;
interface IWorkFactory {
Work getWork();
}
- 创建两个实现IWorkFactory的两个实现类 ,分别创建学生和老师两个工厂类,用来返回各自实例的Work对象的实例;
//实现IWorkFactory的接口
class StudentFactory implements IWorkFactory{
@Override
public Work getWork() {
//返回一个Student的Work对象
return new StudentWork();
}
}
class TeacherFactory implements IWorkFactory{
@Override
public Work getWork() {
//返回一个Teacher的Work对象
return new TeacherWork();
}
}
- 测试
public static void main(String[] args) {
//实例化一个接口指向StudentFactory的实例
IWorkFactory i1 = new StudentFactory();
i1.getWork().work();//-->先指向StudentFactory,后指向StudentWork的work方法
IWorkFactory i2 = new TeacherFactory();
i2.getWork().work();//-->先指向TeacherFactory,后指向TeacherWork的work方法
}
今天这是我第二天发博客,写的不好望各位大佬见谅。今天心情有点差,但是也不会阻碍我努力的步伐,加油!