zoukankan      html  css  js  c++  java
  • 简单工厂模式(SimpleFactory Pattern)

    一、简单工厂模式简介

      简单工厂模式根据提供的数据返回几个可能的类中的一个实例。通常其返回的所有的类都有一个共同的父类和一些黄同的方法,不过这些类中的每个都完成不同的任务,以及针对不同类型的数据做了优化。简单工厂并不是不23个Gof( Gang of Four)模式中的一个,其在这里只不过是作为我们稍后会讨论到的工厂方法(Factory Method)这Gof模式的一个入门而已。

    二、解决问题

      简单工厂的目的在于解决客户于对象间的直接依赖的关系,把他们之间的紧耦合进行解耦,客户实例化对象时不需要关心该对象是由哪个子类实例化的。

    三、UML

      

    四、代码分

    People

    View Code
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace SimpleFactory
    {
    /// <summary>
    /// 人的抽象类
    /// </summary>
    public abstract class People
    {
    public abstract string GetSex();
    }
    /// <summary>
    /// 男人
    /// </summary>
    public class ManPeople:People
    {

    public override string GetSex()
    {
    return "Man";
    }
    }
    /// <summary>
    /// 女人
    /// </summary>
    public class WomanPeople : People
    {
    public override string GetSex()
    {
    return "Woman";
    }
    }

    }

    SimpleFactory

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;

    namespace SimpleFactory
    {
    public class SimpleFactory
    {

    /// <summary>
    /// 简单工厂类
    /// </summary>
    /// <param name="people">人的标志</param>
    /// <returns>返回具体人</returns>
    public static People CreatePeople(string people)
    {
    People p = null;
    switch (people)
    {
    case "M": p = new ManPeople(); break;
    case "W": p = new WomanPeople(); break;
    }
    return p;
    }

    }
    }

    Program

     class Program
    {
    static void Main(string[] args)
    {
    People man = SimpleFactory.CreatePeople("M");
    Console.WriteLine(man.GetSex());


    People woman = SimpleFactory.CreatePeople("W");
    Console.WriteLine(woman.GetSex());

    Console.Read();
    }
    }

    运行结果:
    Man
    Woman

  • 相关阅读:
    JTAG的SWD接线方式
    Qt のEXecl
    人脸识别
    Qt实现基本QMainWindow主窗口程序
    Qt学习之路MainWindow学习过程中的知识点
    QT_FORWARD_DECLARE_CLASS
    标准的并发控制实现
    C++ DFS
    C# 互操作(一) 编写一个C++ COM组件
    Socket使用SOAP调用WCF
  • 原文地址:https://www.cnblogs.com/duandian/p/2433090.html
Copyright © 2011-2022 走看看