工厂方法模式


是什么?

怎么用?

适用哪些情况?


 

 

工厂方法模式:

  在不指定对象具体类型的情况下创建对象。

  主要目的是创建对象!!!

 

以下情况可用工厂方法模式:

  1、创建对象需要大量重复的代码

  2、创建对象时需要用到其他的信息,而这些信息不应该包含在这个类中

  3、创建对象的生命周期需统一管理

 

原理:

  Product 是个接口,所有产品都需要实现这个接口。

  ConcreteProduct 是具体产品类,实现了Product接口。在这个类中,调用工厂方法创建对象。

  Creator 是普通类,它实现了所有的方法,但不实现工厂方法。

  ConcreteCreator 是继承了Creator类,它实现了具体的工厂方法,供ConcreteProduct具体产品类调用。

 

维基百科code例子:

比如:

  有个Button表示按钮类,另外有两个它的子类WinButton和MacButton类,分别表示Windows下的按钮类和MacOS下的按钮类,则具体实现为:

interface ButtonFactory{
    abstract Button createButton();
}
ButtonFactory
class WinButtonFactory implements ButtonFactory{
    Button createButton(){
        return new WinButton();
    }
}
WinButtonFactory
class MacButtonFactory implements ButtonFactory{
    Button createButton(){
        return new MacButton();
    }
}
MacButtonFactory

 

实际中的应用:

  javax.xml.parsers.DocumentBuilderFactory

  javax.xml.parsers.SAXParserFactory

 

posted @ 2019-01-01 16:34  第五  阅读(113)  评论(0编辑  收藏  举报