• 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 }
  • 相关阅读:
    poj 1182:食物链(种类并查集,食物链问题)
    hdu 1556:Color the ball(第二类树状数组 —— 区间更新,点求和)
    南阳理工 题目9:posters(离散化+线段树)
    poj 1195:Mobile phones(二维树状数组,矩阵求和)
    poj 3984:迷宫问题(广搜,入门题)
    poj 3278:Catch That Cow(简单一维广搜)
    《重构与模式》简化(策略模式)-积木系列
    builder模式-积木系列
    spring事务管理-Spring 源码系列(6)
    思考如何阅读
  • 原文地址:https://www.cnblogs.com/huzi007/p/3981820.html
Copyright © 2020-2023  润新知