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();
      }



    模式的核心是工厂类,这个类负责产品的创建,而客户端可以免去产品创建的责任,这实现了责任的分割。
  • 相关阅读:
    Oracle-连接多个字段
    Oracle-like 多条件过滤
    SQL-Union、Union ALL合并两个或多个 SELECT 语句的结果集
    EXCEL-批量删除筛选出的行,并且保留首行
    EXCEL-REPLACE()替换字符串最后几位 删除字符串最后几位
    Oracle-常用表的查询、增加列、删除列、修改列值功能【增删改查】
    Excel-返回列表或数据库中的分类汇总(汇总可以实现要还是不要统计隐藏行功能) subtotal()
    Excel-统计各分数段人数 frequency()
    Excel-给出指定数值的日期 date()
    Class类的理解与获取Class的实例
  • 原文地址:https://www.cnblogs.com/silva/p/201079.html
Copyright © 2011-2022 走看看