工厂方法及抽象工厂模式

1.为什么需要工厂:(Factory Method Pattern)
    工厂能把处理创建对象的细节封装,调用实现某接口的对象的模块就变成了此的对象的客户,他无需知道具体生成怎样的对象,只需调用对象的方法即可。这样就把需要改变的部分抽象出来。
    同时,工厂能为很多相似的客户服务。

 

 

2.“元老工厂”——简单工厂

 
    简单工厂不能算是真正意义模式,但是使用很频繁。

 

 

3.第一种工厂:
    工厂方法用来处理对象的创建,并将这样的行为封装在子类中。这样,客户程序中关于超类的代码就和子类对象创建代码解耦了。
    abstract Product factoryMethod(String type)
a.工厂方法是抽象的,所以依赖子类来处理对象的创建。
b.工厂方法必须返回一个产品。
c.工厂方法把实际代码与客户代码分割开来。

定义工厂方法模式:
    工厂方法模式定义了一个创建对象的接口,但由子类决定要实例化的类是哪一个。工厂方法让类把实例化推迟到子类。
    工厂方法模式能够封装具体类型的实例化。

    工厂方法模式把简单工厂抽象到creator接口里面。
    工厂方法模式也经常使用无参方法,只产生一种产品。

 

 

4.第二种工厂:
    抽象工厂这个模式可以创建产品的家族。

定义抽象工厂方式:
    提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。

 

 

5.抽象工厂与工厂方法的不同:
    抽象工厂与工厂方法都是负责创建对象。

    工厂方法用的是继承:工厂方法的继承,意味着利用工厂方法创建对象,需要扩展一个类,并通过子类覆盖它的工厂方法,达到创建对象的目的。用这种做法,客户只需要知道他们所使用的抽象类型就可以了,而由子类负责决定具体类型。换句话说,它只负责将客户从具体类型中解耦。

    抽象工厂用的是对象的组合:它提供一个用来创建一个产品家族的抽象类型,这个类型的子类定义了产品被产生的方法。要想使用这个工厂,必须先实例化它,然后将它传入一些针对抽象类型所写的代码中。它也可以将客户从所使用的实际具体产品中解耦。另一个优点是可以把一群相关的产品集合起来。但是缺点就是加入新产品就必须改变接口。


    特别的:静态工厂不需要创建对象来实例化对象,但它不能通过继承来改变创建方法的行为。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值