工厂方法模式详解

UML图

工厂方法模式URL图如下:
工厂方法模式

解决问题

在简单工厂模式进一步抽象而来,解决了如何实例化一个对象,也克服了简单工厂模式中违背的“开-闭原则”的缺点。

核心思想

工厂方法模式中,核心的工厂类不再提供所有产品的创建工作,而是将具体的产品交给具体的工厂类去实现。核心工厂类值负责制定具体工厂需要实现的接口即可,至于具体的工作交给子类去实现。

实际运用

假设我们有一个手机加工厂,具体的子工厂来生产Android手机和Iphone。类图如下:
手机工厂
根据类图可以定义客户端调用代码:

//获得制造Android手机的工厂
CreatorPhone androidFactory = new CreatorAndroidPhone();
//根据Android手机工厂制造Android机
Phone androidPhone = androidFactory.createPhone();
androidPhone.call();

优点

由于工厂方法模式中的核心是抽象的工厂类,所有的工厂类必须实现抽象工厂类的接口。当系统需要扩展添加新的产品,则只需要添加一个具体的产品对象和具体的工厂对象即可。不需要对原有工厂进行修改。也不需要修改客户端,这就符合了“开闭原则”。

缺点

使用工厂模式,客户端需要判断要实例化哪个具体的工厂。具体的实现工厂可能需要增加代码量。

Android与工厂方法模式

在Android中Activity和Service等核心组建中,都定义了onCreate()方法,例如当我们要显示用户界面的时候,一般都会在onCreate()中使用setContentView()方法,这个方法是在Activity中定义的,在编写具体的Activity时有继承者实现。

转载于:https://my.oschina.net/u/1023510/blog/535759

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值