知识点:工厂方法模式建立对象html
(一)什么是工厂方法模式设计模式
定义一个建立产品对象的工厂接口,子类工厂实现接口来建立具体的产品对象ide
(二)角色学习
抽象工厂:是工厂方法模式的核心,建立具体对象的的工厂类必须实现这个接口spa
具体工厂:实现抽象工厂接口的具体工厂,用来建立具体产品对象设计
抽象产品:具体产品对象拥有的共同父类或者接口htm
具体产品:实现抽象产品的接口,包含了产品的具体细节对象
产品使用者:使用产品者blog
(三)代码实例接口
//工厂方法设计模式
public class FactoryMethodTest {
public static void main(String[] args) {
//建立某种工厂,建立对应的产品对象,执行产品对象中的doWork()方法
PersonWorkFactory stuFac=new StudentWorkFactory();
stuFac.getWorkClass().doWork();
PersonWorkFactory teaFac=new TeacherWorkFactory();
teaFac.getWorkClass().doWork();
}
}
//抽象工厂
interface PersonWorkFactory{
Work getWorkClass();
}
//具体工厂,生产产品
class StudentWorkFactory implements PersonWorkFactory{
@Override
public Work getWorkClass() {
return new StudentWork();
}
}
class TeacherWorkFactory implements PersonWorkFactory{
@Override
public Work getWorkClass() {
return new TeacherWork();
}
}
//抽象产品
interface Work{
void doWork();
}
//具体产品
class StudentWork implements Work{
@Override
public void doWork() {
System.out.println("学习!");
}
}
class TeacherWork implements Work{
@Override
public void doWork() {
System.out.println("教学生知识!");
}
}
执行结果:

上面的核心工厂PersonWorkFactory不负责产品对象的建立工做,是一个抽象工厂的角色,只负责具体工厂子类实现的接口,这样抽象化的好处使得系统在不修改具体工厂角色的状况下,能够引进新的产品,遵循开闭原则,提升了系统的可扩展性。
(四)优势
(1)使用工厂方法建立具体产品对象,隐藏了具体对象的建立细节,只须要关心具体产品对应的工厂
(2)遵循开闭原则,当加入新的产品类时,只须要同时加入相应的工厂类,实现扩展,无需修改原来的代码,提升了代码的可扩展性
参考博客:https://www.cnblogs.com/chenxkang/p/6689631.html https://www.cnblogs.com/chenpi/p/5141376.html#_label3