您的位置:首页 > 其它

工厂方法模式(Factory Method)

2016-11-18 09:53 501 查看
工厂模式属于创建型模式,如果需要大量的创建实现同一个接口或者类的对象时,可以使用。

简单看下图例:



/**
* Created by Administrator on 2016/11/18.
*/
public interface Worker {
public void work();
}


/**
* Created by Administrator on 2016/11/18.
*/
public class Doctor implements Worker {
@Override
public void work() {
System.out.println("医生开始上班了");
}
}
/**
* Created by Administrator on 2016/11/18.
*/
public class Student implements Worker {
@Override
public void work() {
System.out.println("学生开始上课了");
}
}
/**
* Created by Administrator on 2016/11/18.
*/
public class Teacher implements Worker {
@Override
public void work() {
System.out.println("教师开始教学了");
}
}
public class Headmaster extends Teacher{
public void work(){
System.out.print("校长开始上班了");
}
}
/**
* Created by Administrator on 2016/11/18.
*/
public class WorkFactory {
public void work(Worker worker){
worker.work();
}
/*
*多个工厂方法,创建不同的工厂类,外部调用
*/
public Worker StudentWork(){
return new Student();
}
public Worker TeacherWork(){
return new Teacher();
}
public Worker DoctorWork(){
return  new Doctor();
}
public Worker HeadmasterWork(){
return new Headmaster();
}
/*
*创建静态工厂类,外部调用
*/
public static Worker StudentWork1(){
return new Student();
}
public static Worker TeacherWork1(){
return new Teacher();
}
public static Worker DoctorWork1(){
return new Doctor();
}
public static Worker HeadmasterWork1(){
return new Headmaster();
}
}
/**
* Created by Administrator on 2016/11/18.
*/
public class Test {
public static void main(String[] args){
WorkFactory factory = new WorkFactory();
factory.work(new Doctor());
factory.work(new Teacher());
factory.work(new Student());
factory.work(new Headmaster());

factory.DoctorWork().work();
factory.TeacherWork().work();
factory.StudentWork().work();
factory.HeadmasterWork().work();

WorkFactory.DoctorWork1().work();
WorkFactory.TeacherWork1().work();
WorkFactory.StudentWork1().work();
WorkFactory.HeadmasterWork1().work();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: