• 创建型模式工厂方法


    1.1.1工厂方法

     
        定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个类的实例化延迟到其子类。

     适用性

     
        1.当一个类不知道它所必须创建的对象的类的时候。
     
        2.当一个类希望由它的子类来指定它所创建的对象的时候。
     
        3.当将创建对象的职责委托给多个帮助子类中的某一个,并且*希望将哪一个帮助子类是代理者这一信息局部化的时候。
                           

     参与者

     
        1.Product
          定义工厂方法所创建的对象的接口。
     
        2.ConcreteProduct
          实现Product接口。
     
        3.Creator
          声明工厂方法,该方法返回一个Product类型的对象*
          Creator也可以定义一个工厂方法的缺省实现,它返回一个缺省的ConcreteProduct对象。
          可以调用工厂方法以创建一个Product对象。
     
        4.ConcreteCreator
          重定义工厂方法以返回一个ConcreteProduct实例。

     类图

      

     例子

    Product

    public interface Work {
         void doWork();
    }

    ConcreteProduct

     
    public class StudentWork implements Work { 
        public void doWork() { 
           System.out.println("学生做作业!");    
    } }
     public class TeacherWork implements Work {
         public void doWork() {
            System.out.println("老师审批作业!");    
    } }

    Creator

    public interface IWorkFactory {
         Work getWork();
    }
     

    ConcreteCreator

    public class StudentWorkFactory implements IWorkFactory {
         public Work getWork() {
            return new StudentWork();
        }
     } 
    public class TeacherWorkFactory implements IWorkFactory {
         public Work getWork() {
            return new TeacherWork();
        }
     }
     

    Test

    public class Test {
         public static void main(String[] args) {
            IWorkFactory studentWorkFactory = new StudentWorkFactory();
            studentWorkFactory.getWork().doWork();  

    IWorkFactory teacherWorkFactory
    = new TeacherWorkFactory(); teacherWorkFactory.getWork().doWork(); } }
     

    result

     
    学生做作业!
    老师审批作业!
  • 相关阅读:
    ZOJ 1002 Fire Net (火力网)
    UVa OJ 117 The Postal Worker Rings Once (让邮差只走一圈)
    UVa OJ 118 Mutant Flatworld Explorers (变体扁平世界探索器)
    UVa OJ 103 Stacking Boxes (嵌套盒子)
    UVa OJ 110 MetaLoopless Sorts (无循环元排序)
    第一次遇到使用NSNull的场景
    NSURL使用浅析
    从CNTV下载《小小智慧树》
    NSDictionary and NSMutableDictionary
    Category in static library
  • 原文地址:https://www.cnblogs.com/aloe/p/2650280.html
Copyright © 2020-2023  润新知