zoukankan      html  css  js  c++  java
  • 设计模式——简单工厂模式

    简单工厂模式并不是23个设计模式的一员,但是一般将它作为学习设计模式的起点。简单工厂模式又称为静态工厂模式,属于类创建型模式。

    可以根据传递参数的不同返回不同类的实例。专门定义了一个类来创建其它类,这个类被称为工厂类。被创建的实例通常具有相同的父类。

    简单工厂模式结构图:

    工厂类接收不同参数就可以选择产生不同的实例。工厂方法是静态的。返回类型为抽象产品类型即Product类型。ConcreteProduct为具体的产品角色,可以是多个。创建的对象都是这个角色的具体实例。

     

    下面通过具体例子来具体说明一下。

    使用简单工厂模式模拟女娲(Nvwa)造人(Person),如果传入参数M,则返回一个Man对象,如果传入参数W,则返回一个Woman对象,如果传入参数R,则返回一个Robot对象。请用程序设计实现上述场景。

     

    Man、Woman、Robot就是我们想要的对象,也就相当于简单工厂中的产品。而女娲就相当于简单工厂模式中的工厂。通过工厂类传入不同的参数判断应该产生哪中实例对象。也就是女娲造哪种人。

    Person代码

    public interface Person {
        public void make();
    }

    Man代码

    public class Man implements Person {
    
        /**
         * Default constructor
         */
        public Man() {
        }
        public void make(){
            System.out.print("生产男人");
        }
    
    }

    Woman代码

    public class Woman implements Person {
    
        /**
         * Default constructor
         */
        public Woman() {
        }
        public void make(){
            System.out.print("生产女人");
        }
    
    }

    Robot代码

    public class Robot implements Person {
    
        /**
         * Default constructor
         */
        public Robot() {
        }
        public void make(){
                System.out.print("生产机器人");
            }
    
    }

    Nvwa代码

    public class Nvwa {
    
        /**
         * Default constructor
         */
        public Nvwa() {
        }
        //传输参数arg
        public  static Person factoryMethod(String arg){
            //判断参数,再选择调用哪个类
            if(arg.equalsIgnoreCase("M"))
            {
                return new Man();
            }else if(arg.equalsIgnoreCase("W"))
            {
                return new Woman();
            }else if(arg.equalsIgnoreCase("R"))
            {
                return new Robot();
            }else
            {
                return null;
            }
        }
    
    }
  • 相关阅读:
    WF4.0 Beta1 自定义跟踪
    WF4.0 Beta1 流程设计器与Activity Designer
    新版本工作流平台的 (二) 权限算法(组织结构部分)
    WF4.0 Beta1 WorkflowInvoker
    WF4.0 基础篇 (十) Collection 集合操作
    WF4.0 基础篇 (十五) TransactionScope 事物容器
    WF4.0 基础篇 (六) 数据的传递 Arguments 参数
    WF4B1 的Procedural Activity 之InvokeMethod , InvokeMethod<T> 使用
    WF4.0 Beta1 异常处理
    WF4.0 Beta1 变量 Variables
  • 原文地址:https://www.cnblogs.com/liushiqiang123/p/9819272.html
Copyright © 2011-2022 走看看