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



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

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

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

    工厂角色是该模式的核心。往往由一个具体的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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值