Chinaunix首页 | 论坛 | 博客
  • 博客访问: 194766
  • 博文数量: 55
  • 博客积分: 2330
  • 博客等级: 大尉
  • 技术积分: 504
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-20 22:55
文章分类

全部博文(55)

文章存档

2013年(6)

2012年(7)

2011年(7)

2010年(35)

我的朋友

分类: Java

2012-10-12 21:08:00

概述:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延 到其子类。
适用情况:
1.当一个类不知道它所必须创建的对象的类的时候。
2.当一个类希望由它的子类来指定它所创建的对象的时候。
3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者 这一信息局部化的时候。
 
参与者:
1.Product 定义工厂方法所创建的对象的接口。
2.ConcreteProduct 实现Product接口。
3.Creator 声明工厂方法,该方法返回一个Product类型的对象。 Creator也可以定义一个 工厂方 法的缺省实现,它返回一个缺省的ConcreteProduct对象。可以调用工厂方法以创建一个Pro duct对象。
4.ConcreteCreator 重定义工厂方法以返回一个ConcreteProduct实例。 类图:
Product

点击(此处)折叠或打开

  1. public interface Work {
  2. void doWork();
  3. }
ConcreteProduct

点击(此处)折叠或打开

  1. public class StudentWork implements Work {
  2. public void doWork() {
  3. System.out.println("学生做作业!");
  4. }
  5. }
  6. public class TeacherWork implements Work {
  7. public void doWork() {
  8. System.out.println("老师审批作业!");
  9. }
  10. }
Creator

点击(此处)折叠或打开

  1. public interface IWorkFactory {
  2. Work getWork();
  3. }
ConcreteCreator

点击(此处)折叠或打开

  1. public class StudentWorkFactory implements IWorkFactory {
  2. public Work getWork() {
  3. return new StudentWork();
  4. }
  5. }
  6. public class TeacherWorkFactory implements IWorkFactory {
  7. public Work getWork() {
  8. return new TeacherWork();
  9. }
  10. }
Test

点击(此处)折叠或打开

  1. public class Test {
  2. public static void main(String[] args) {
  3. IWorkFactory studentWorkFactory = new StudentWorkFactory();
  4. studentWorkFactory.getWork().doWork();
  5. IWorkFactory teacherWorkFactory = new TeacherWorkFactory();
  6. teacherWorkFactory.getWork().doWork();
  7. }
  8. }

阅读(784) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~