设计模式学习笔记-简单工厂模式

1、概述

     将一个具体类的实例化交给静态工厂方法来实现;

2、模式中的角色

    2.1:工厂类(Simple Factory)只包含创建具体类的静态方法;

    2.2:抽象类(Map)定义简单工厂要返回的类;

    2.3:具体类(BaiduMap,GaodeMap)具体类

3、UML图

  

 

 

4、代码实现

 

    public class Map
    {
        /// <summary>
        /// 地图名称
        /// </summary>
        public string Name { get; set; }

        /// <summary>
        /// 操作
        /// </summary>
        public virtual void Print() { }
    }

    public class BaiduMap : Map
    {
        public override void Print()
        {
            Console.WriteLine("选择了{0}地图", Name);
        }
    }

    public class GaodeMap : Map
    {
        public override void Print()
        {
            Console.WriteLine("选择了{0}地图",Name);
        }
    }

    public class MapSimpleFactory
    {
        /// <summary>
        /// 创建具体实体类
        /// </summary>
        /// <param name="mapType"></param>
        /// <returns></returns>
        public static Map CreateMap(MapType mapType)
        {
            Map map = null;
            switch (mapType)
            {
                case MapType.Baidu:
                    map = new BaiduMap();
                    break;
                case MapType.Gaode:
                    map = new GaodeMap();
                    break;
            }
            return map;
        }

        public enum MapType
        {
            Baidu,
            Gaode
        }
    }

    class Program
    {
        static void Main(string[] args)
        {
            #region 简单工厂模式实现

            Map map = MapSimpleFactory.CreateMap(MapSimpleFactory.MapType.Baidu);
            map.Name = "百度";
            map.Print();

            map = MapSimpleFactory.CreateMap(MapSimpleFactory.MapType.Gaode);
            map.Name = "高德";
            map.Print();

            Console.ReadLine();
            #endregion
        }
    }

 

参考书籍《大话设计模式》

posted @ 2017-03-27 00:06  Rich.W  阅读(141)  评论(0编辑  收藏  举报