简要学习简单工厂模式与工厂方法模式

来源:互联网 发布:可以看本子软件 编辑:程序博客网 时间:2024/06/18 14:30


   简单工厂模式与工厂方法模式

    简单工厂模式,又称静态工厂方法模式。由一个工厂类根据传入的参量决定创建出哪一种具体产品类的实例。

消费者只知道需要哪一种产品类,具体的实例化工作由工厂类完成。即消费者只阐明需求,具体工作由工厂类完成。产品模块由产品的抽象层----接口和具体实现类组成。故简单工厂模式的角色有工厂角色、抽象产品角色以及具体产品角色。(如图)

    工厂角色是该模式的核心。往往由一个具体的java类实现。

    抽象产品角色是创建对象的父类或超类。往往由抽象类或接口组成。

    具体产品角色是所有创建的具体对象,有一个具体java类担任。

 

    工厂类的具体实现:

public class Creater {

/*

静态工厂方法

*/

public static Productfactory() {

return new ConcreteProduct();

}

}

    模式的核心是工厂类,这个类含有必要的判断逻辑,可以决定在省么时候创建那一个产品类的实例,而客户端则可以免除直接创建产品对象的责任,而仅仅负责消费产品。这种做法实现了对责任的分割。

    模式以不变(一个工厂类)应万变(产品类的变化),未能很好的满足“开-闭”原则。当产品类增加时,工厂类也必须改变。

    具体实例:SAX2库中的XMLReaderFactory






    简单工厂模式和工厂方法模式都是类的创建模式。工厂方法模式是对简单工厂模式的进一步完善(改进),又叫多态性工厂模式。该模式对工厂类进一步抽象化,形成工厂等级结构,与产品等级结构对应。模式中具体包含以下4中角色:


    抽象工厂角色(该角色是模式的核心,所有具体工厂类必须继承该抽象类或实现该接口。)、具体工厂角色(具体的工厂类。)、抽象产品角色、具体产品角色。


    客户端创建工厂对象,然后调用工厂对象的工厂方法创建产品对象。


    具体实现:


public interface Creator {


        publicProduct factory();


}


 


    具体实例:在java聚集中的应用。所有的java聚集都实现了Collection接口,该接口规定所有的聚集必须提供一个iterator()方法,返回一个Iterator类型的对象。一个具体的java聚集对象,会通过这个方法返回一个具体的Iterator类对象。





0 0
原创粉丝点击