工厂方法模式详解

来源:互联网 发布:php 输出文本 编辑:程序博客网 时间:2024/06/03 15:59

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时有继承者实现。

0 0
原创粉丝点击