Design Pattern: Factory Method 模式
来源:互联网 发布:java socket长连接 编辑:程序博客网 时间:2024/05/17 23:25
举一个例子,假设您要完成一个文件编辑器,您希望这个编辑器可以适用于所有类型的档案编辑,例如RTF、DOC、TXT等等,尽管这些文件有着不同的格式,您先确定的是这些文件必然具备的一些操作介面,例如储存、开启、关闭、删除等等,您用一个IDocument类型来进行操作,这么一来这个框架就无需考虑实际的储存、开启等细节是如何进行的。
AbstractEditor中的createDocument()方法是个抽象方法,因为框架不知道您将实现一个什么类型的文件,这个抽象方法将推迟至继承AbstractEditor的子类中实现。
这个架构可用以下简单的示意程式来作示范,当中实现了一个RTFDocument,虽然在AbstractEditor中并不知道我们会套用这个RTFDocument,但您可以看到,透过多型操作,您的框架可以进行对文件的相关操作。
这个架构可用以下简单的示意程式来作示范,当中实现了一个RTFDocument,虽然在AbstractEditor中并不知道我们会套用这个RTFDocument,但您可以看到,透过多型操作,您的框架可以进行对文件的相关操作。
- AbstractEditor.java
public abstract class AbstractEditor { private IDocument document; public abstract IDocument createDocument(); public void newDocument() { document = createDocument(); document.open(); } public void saveDocument() { if(document != null) document.save(); } public void closeDocument() { if(document != null) document.close(); }}
- IDocument.java
public interface IDocument { public void open(); public void save(); public void close();}
- RTFEditor.java
public class RTFEditor extends AbstractEditor { public IDocument createDocument() { return new RTFDocument(); } }
- RTFDocument.java
public class RTFDocument implements IDocument { public RTFDocument() { System.out.println("建立RTF文件"); } public void open() { System.out.println("开启文件"); } public void save() { System.out.println("储存文件"); } public void close() { System.out.println("关闭文件"); }}
Factory Method中的AbstractOperator中拥有一个抽象的factoryMethod()方法,它负责生成一个IProduct类型的物件,由于目前还不知道将如何实现这个类型,所以将之推迟至子类别中实现,在AbstractOperator中先实现IProduct操作介面沟通的部份,只要介面统一了,利用多型操作即可完成各种不同的IProduct类型之物件操作。
也就是说,对AbstractOperator来说,其操作的IProduct是可以抽换的。
- Design Pattern: Factory Method 模式
- Design Pattern: Factory Method 模式
- Design Pattern: Factory Method 模式
- Design Pattern Factory Method
- Design pattern:Factory Method
- Design pattern-Factory method
- 设计模式之 - 工厂方法模式 (Factory Method design pattern)
- Delphi Design Pattern - Factory Method
- [Python-pattern design] Factory method pattern
- java design pattern (1. Factory Method pattern)
- Design Pattern 3: Factory Method && Abstract Factory Pattern
- Design Pattern - Factory Method(C#)
- Design Pattern: Simple Factory 模式
- Design Pattern: Abstract Factory 模式
- Design Pattern: Template Method 模式
- 工厂方法模式(Factory Method Pattern)
- 工厂方法模式(Factory Method Pattern)
- Factory Method Pattern 工厂模式 学习笔记
- 不规则步长数组创建
- 编程之美1.15节:构造数独算法-回溯法和置换法
- Android系统Recovery工作原理之使用update.zip升级过程分析(三)---Android系统的三种启动模式
- QString to string
- 什么是ARM开发板及其硬件特性介绍
- Design Pattern: Factory Method 模式
- Java String 与 StringBuffer 用法区别
- openfire+spark相关的中文资料
- UISwipeGestureRecognizer ---手指动作
- 信息熵的计算心得
- 一、选择模型(select)
- 《代码整洁之道》简单总结
- Activity的生命周期
- Fedora 8 安装开启samba