工厂方法定义:

  

  1. 工厂方法
  2.  
  3. 概述
  4. 定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。
  5.  
  6. 适用性
  7. 1.当一个类不知道它所必须创建的对象的类的时候。
  8.  
  9. 2.当一个类希望由它的子类来指定它所创建的对象的时候。
  10.  
  11. 3.当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
  12. 参与者
  13. 1.Product
  14. 定义工厂方法所创建的对象的接口。
  15.  
  16. 2.ConcreteProduct
  17. 实现Product接口。
  18.  
  19. 3.Creator
  20. 声明工厂方法,该方法返回一个Product类型的对象。
  21. Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。
  22. 可以调用工厂方法以创建一个Product对象。
  23.  
  24. 4.ConcreteCreator
  25. 重定义工厂方法以返回一个ConcreteProduct实例。

测试代码:

  1. public class Test {
  2.  
  3. public static void main(String[] args) {
  4. IWorkFactory studentWorkFactory = new StudentWorkFactory();
  5. studentWorkFactory.getWork().doWork();
  6.  
  7. IWorkFactory teacherWorkFactory = new TeacherWorkFactory();
  8. teacherWorkFactory.getWork().doWork();
  9. }
  10.  
  11. }
  1. public interface IWorkFactory {
  2.  
  3. Work getWork();
  4. }
  1. public interface Work {
  2.  
  3. void doWork();
  4. }
  1. public class StudentWorkFactory implements IWorkFactory {
  2.  
  3. public Work getWork() {
  4. return new StudentWork();
  5. }
  6.  
  7. }
  1. public class StudentWork implements Work {
  2.  
  3. public void doWork() {
  4. System.out.println("学生做作业!");
  5. }
  6.  
  7. }
  1. public class TeacherWorkFactory implements IWorkFactory {
  2.  
  3. public Work getWork() {
  4. return new TeacherWork();
  5. }
  6.  
  7. }
  1. public class TeacherWork implements Work {
  2.  
  3. public void doWork() {
  4. System.out.println("老师审批作业!");
  5. }
  6.  
  7. }

java设计模式--创建模式--工厂方法的更多相关文章

  1. Java设计模式3:工厂方法模式

    工厂方法模式 工厂方法模式是类的创建模式.工厂方法模式的用意是定义一个创建产品对象的工厂接口,将实际创建工厂推迟到子类中. 工厂方法模式 工厂方法模式是对简单工厂模式进一步抽象的结果. 假如是不使用反 ...

  2. java设计模式-----2、工厂方法模式

    再看工厂方法模式之前先看看简单工厂模式 工厂方法模式(FACTORY METHOD)同样属于一种常用的对象创建型设计模式,又称为多态工厂模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的 ...

  3. 重学 Java 设计模式:实战工厂方法模式

    作者:小傅哥 博客:https://bugstack.cn 沉淀.分享.成长,让自己和他人都能有所收获!

  4. java设计模式 -------- 创建模式 之 抽象工厂模式

    本文是自己学习所做笔记,欢迎转载,但请注明出处:http://blog.csdn.net/jesson20121020 工厂方法模式和抽象工厂模式不好区分清楚: 工厂方法模式特点: 1. 一个抽象产品 ...

  5. 《JAVA设计模式》之工厂方法模式 (Factory)

    在阎宏博士的<JAVA与模式>一书中开头是这样描述工厂方法模式的: 工厂方法模式是类的创建模式,又叫做虚拟构造子(Virtual Constructor)模式或者多态性工厂(Polymor ...

  6. [设计模式-创建型]工厂方法(Factory Method)

    概括 名称 Factory Method 结构 动机 定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method 使一个类的实例化延迟到其子类. 适用性 当一个类不知道它所必 ...

  7. JAVA设计模式之【工厂方法模式】

    看例子 1.TV产品接口,负责播放 public interface TV // TV接口 { public void play(); } 2.TV工厂接口,负责生产产品 public interfa ...

  8. java设计模式--创建模式--原型模式

    原型模式: 原型模式 概述 用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象. 适用性 .当一个系统应该独立于它的产品创建.构成和表示时. .当要实例化的类是在运行时刻指定时,例如,通过 ...

  9. java设计模式--创建模式--建造者模式

    对于建造者模式,小编个人理解为就是一个组装型的模式. 建造者模式 概述 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 适用性 1.当创建复杂对象的算法应该独立于该对象的组 ...

随机推荐

  1. 深入浅出CChart 每日一课——第十八课 女神的套娃,玩转对话框

    前面笨笨已经给大家展示了CChart编程的N个例子.这些例子中,我们的CChart图像都是绘制在程序的主窗口中的. 在很多情况下,我们面对的情形不是这样的.这节课笨笨就给大家介绍一下怎样在对话框中用C ...

  2. IOS回调机制——代理,通知中心以及Block

    Xcode5.0正式版 IOS7和Xcode5正式版在昨天正式可以下载.IOS7不多说了,交互设计,界面风格,操作的简化程度都属于比较领先的水平. 这里来说说Xcode5正式版,和以前的Xcode5测 ...

  3. nginx和tomcat的响应时间

    1.request_time 官网描述:request processing time in seconds with a milliseconds resolution; time elapsed ...

  4. winform程序中Label自动换行

    参考的是网上这篇文章:http://www.cnblogs.com/qb371/archive/2011/09/20/2366310.html 不过貌似注释有点问题,我的代码如下,我是将label放在 ...

  5. 关于Microsoft app下同义词的整理

    Windows os 以下词表达的是同一个概念 windows store app windows metro app windows modern app windows runtime app w ...

  6. [Regex Expression] Match mutli-line number, number range

    /^-?\d{,}\.\d+$/gm

  7. Android应用程序内部启动Activity过程(startActivity)的源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6703247 上文介绍了Android应用程序的 ...

  8. Android系统匿名共享内存Ashmem(Anonymous Shared Memory)驱动程序源代码分析

    文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6664554 在上一文章Android系统匿名共 ...

  9. Intellij Idea安装主题

    IDEA中jar包形式的主题比较常见.(顺便给大家推荐一个主题站:http://www.ideacolorthemes.org/themes/) 从主菜单中依次选择[File]>[Import ...

  10. Android 使用开源xUtils来实现多线程下载(非原创)

    1.程序员自己也是可以实现多线程下载的,只是代码量比较大,而且,其中有许多细节需要考虑到,在GitHub上有人写好的代码,我们可以拿过来使用下,节省了我们开发程序的时间 2.导包:xUtils-2.6 ...