zoukankan      html  css  js  c++  java
  • java设计模式--创建模式--工厂方法

    工厂方法定义:

      

     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 }
  • 相关阅读:
    C#图片存到资源文件,以及调用图片
    error C2039: “create”: 不是“cocos2d::GLView”的成员,出错解决办法
    error LNK2038: 检测到“_MSC_VER”的不匹配项: 值“1600”不匹配值“1800”
    vs2013激活码
    AppDelegate.h文件
    AppDelegate.cpp文件详解
    【最终版】Cocos2d-x&JS v3.7 发布!
    cocos2d-x 3.0 示例代码分析3:BaseTest
    vue li click
    me
  • 原文地址:https://www.cnblogs.com/huzi007/p/3981820.html
Copyright © 2011-2022 走看看