zoukankan      html  css  js  c++  java
  • 创建型模式之简单工厂模式

    简单工厂模式是类的创建模式,又叫做静态工厂方法模式。就是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例。

    一般涉及到三种角色:
        工厂类:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的类实现。
        抽象产品角色:担任这个角色的类是由工厂方法模式所创建的对象的父类,或她们共同拥有的接口。一般由接口或抽象类实现。
        具体产品角色:工厂方法模式所创建的任何对象都是这个角色的实例,由具体类实现。

    以为例讨论该模式的具体实现:
        Person 人接口,规定人具有的一些共同特性
        Man 男人类,派生自Person接口
        Women 女人类,派生自Person接口
        GodToCreate 上帝造人类,负责男人和女人的创建工作。

    Person.cs
    using System;
    namespace WindowsApplication5
    {
     public interface Person
     {
      void eat();//吃饭
      void drink();//喝水
     }
    }

    Man.cs
    using System;
    namespace WindowsApplication5
    {
     public class Man:Person
     {
      #region Person Members

      public void eat()
      {
       System.Windows.Forms.MessageBox.Show("狼吞虎咽...");
      }
      public void drink()
      {
       System.Windows.Forms.MessageBox.Show("咕咚咕咚...");
      }
      #endregion
     }
    }

    Women.cs
    using System;
    namespace WindowsApplication5
    {
     public class Women:Person
     {
      #region Person Members

      public void eat()
      {
       System.Windows.Forms.MessageBox.Show("细嚼慢咽...");
      }
      public void drink()
      {
       System.Windows.Forms.MessageBox.Show("用鼻子先闻了闻...");
      }
      #endregion
     }
    }

    GodToCreate.cs
    using System;
    namespace WindowsApplication5
    {
     public class GodToCreate
     {
      public static Person factory(int which)
      {
       if(which.Equals(0))
        return new Man();
       else if(which.Equals(1))
        return new Women();
       else
        return null;
             }

     }
    }

    On client, to test it as following:
    private void button1_Click(object sender, System.EventArgs e)
      {
       Person one = GodToCreate.factory(1);
       one.eat();
       one.drink();
       one = GodToCreate.factory(0);
       one.eat();
       one.drink();
      }



    模式的核心是工厂类,这个类负责产品的创建,而客户端可以免去产品创建的责任,这实现了责任的分割。
  • 相关阅读:
    pythone 请求响应字典
    python strip()
    python,datetime
    How Flask Routing Works
    python __file__ 与argv[0]
    Python的zip函数
    Python中的__new__()方法与实例化
    python,dict的setdefault方法
    python yield
    python with用法
  • 原文地址:https://www.cnblogs.com/silva/p/201079.html
Copyright © 2011-2022 走看看