工厂方法模式和抽象工厂模式

最近发现好懒,奥运前就打算写的BLOG,拖到奥运后才写,咳...放假3天什么都没干,整天无所事事....

 

 

 

工厂方法模式是简单工厂模式(静态工厂模式)的一种推广,他保持了简单工厂模式的优点,并在上面有了一些提升

 

在工厂方法模式中,核心工厂不再负责所有实例的创建,而改为了由他的子类进行创建工作.核心工厂类变为了抽象的角色.

 

 

工厂方法模式的系统涉及到了以下角色:

 

    抽象工厂角色:与应用程序无关,任何在模式中创建对象的工厂必须实现这个接口。


    具体工厂角色:实现了抽象工厂接口的具体Java类,含有与引用密切相关的逻辑,并且受到应用程序的调用以创建产品

 

                        对象。


    抽象产品角色:工厂方法所创建产品对象的超类型,也就是产品对象的共同父类或共同拥有的接口。


    具体产品角色:这个角色实现了抽象产品角色所声名的接口。工厂方法所创建的每个具体产品对象都是某个具体产品角

 

                         色的实例。

 

 

可以看下面的图片(从原来那个高手blog中截出来的)

 

 

上面这个图中,抽象工厂角色就是水果工厂接口,

 

                   具体工厂角色就是底下的苹果工厂等,

 

                   抽象产品角色就是水果产品接口,

 

                   具体产品角色就是具体的产品.

 

 

工厂方法模式和简单工厂相比,工厂方法模式把核心工厂类抽象出来,也就和前面简单工厂方法中,水果产品接口是同级

 

 

 

抽象工厂方法

 

按照我理解我看那篇文章的说明,涉及到一个产品族和产品等级的概念

 

 

举个例子吧

 

上面的水果中的苹果,草莓,葡萄就属于一个等级的东西,如果工厂需要扩建,生产的苹果按地方分成,北方苹果,南方苹果,这就

 

是一个产品族,他属于同一个工厂下的不同产品,也许我的举例不是很清楚

 

看别人举的例子

 

 

 

他从一个抽象工厂中生成了2个子类工厂,一个热带工厂,一个亚热带工厂, 2个工厂都可以生产水果和蔬菜,但是热带工厂只能

 

生产热带水果和蔬菜,亚热带水果只能身长亚热带的水果和蔬菜,水果继承了水果的抽象类,蔬菜继承了蔬菜的抽象类

 

与工厂方法模式不同的是

 

工厂方法采用的是类继承机制(生成一个子类,重写该工厂方法,在该方法中生产一个对象)。

 

抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品具体类型的情况下,创建多个产品对象.

 

 

 

 

 

不理解可以看

http://lavasoft.blog.51cto.com/62575/11674

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值