• 简单工厂模式(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

  • 相关阅读:
    Python——str(字符串)内部功能介绍
    Python网络编程——设定并获取默认的套接字超时时间
    Python网络编程——主机字节序和网络字节序之间的相互转换
    Python网络编程——通过指定的端口和协议找到服务名
    python网络编程——将IPv4地址转换成不同的格式
    Python网络编程——获取远程设备的IP地址
    Python网络编程——设备名和IPv4地址
    Python+Flask+MysqL的web建设技术过程
    管理信息系统 第三部分 作业
    模型分离(选做)
  • 原文地址:https://www.cnblogs.com/duandian/p/2433090.html
Copyright © 2020-2023  润新知