码迷,mamicode.com
首页 > Windows程序 > 详细

c#设计模式(1)----简单工厂模式

时间:2016-04-25 19:28:20      阅读:228      评论:0      收藏:0      [点我收藏+]

标签:

1.前言

  陆陆续续整理总结设计模式一个多月了,也在逐渐的把项目中的一些代码进行一些优化。其实这次的总结整理处理让自己对设计模式有了新的认识之外, 对c#面向对象,反射,uml,设计原则都有新的认知。所以希望小伙伴能抽时间对设计模式进行一次全面的学习,我想只要认真学过的人都会有一定的提高。下 面先来说一下简单工厂模式。

2.什么叫简单工厂模式?

  简单工厂模式【SimpleFactory】并不是23种设计模式之一。根据提供给它的数据调用一个类的获得多个派生类中的其中一个派生类。下面是我实现简单工厂的的过程。

调用实现类

技术分享
         /// <summary>
        /// 获取楼栋
        /// </summary>
        /// <param name="gatapower"></param>
        /// <returns></returns>
        public result get_buildings(fee_power_query fee_power_query)
        {
            var unit = unit_factory.create_unit_factory("building");
            unit.fee_power_query = fee_power_query;
            return unit.get_info();

        }
技术分享

简单工厂类

技术分享
技术分享
//单位信息工厂模式
    public class unit_factory
    {
        public unit unit
        {
            get
            {
                throw new System.NotImplementedException();
            }
            set
            {
            }
        }
    
        public static unit create_unit_factory(string unitname)
        {
            unit unit = null;

            switch (unitname)
            {
                case "room":
                    {
                        new unti_rooms();
                        break;
                    }
                case "floor":
                    {
                        new unti_floor();
                        break;
                    }
                case "building":
                    {
                        new unti_building();
                        break;
                    }
                case "area":
                    {
                        new unti_areas();
                        break;
                    }
            }
            return unit;
        }
    }
技术分享

基类

技术分享
public class unit : wx_sbs_redis
    {
        public fee_power_query fee_power_query;
        public virtual result get_info()
        {
            result ret = null;
            return ret;
        }
    }
技术分享

派生类

技术分享
技术分享
//楼层信息
    class unti_floor : unit
    {
        public override result get_info()
        {
            string sign = fee_power_query.orgid + "|" + fee_power_query.uid + "|" + fee_power_query.area_id + "|" + fee_power_query.building_id + "|" + fee_power_query.cardno + "|" + fee_power_query.code;
            if (!fee_power_query.valid_floors())
                return Result((int)errcode.Interval, fee_power_query.msg);
            List<cs_power> list = new List<cs_power>();
            var recents = new fee_recents().pick("fee" + fee_power_query.uid, "power_floor");
            var ret = new wxwebapi<i_gate_fee_power>().invoke(i => i.floors, fee_power_query);
            return ret;
        }
    }
    //楼栋信息
    class unti_building : unit
    {
        public override result get_info()
        {
            if (!fee_power_query.valid_buildings())
                return Result((int)errcode.Interval, fee_power_query.msg);
            var ret = new wxwebapi<i_gate_fee_power>().invoke(i => i.buildings, fee_power_query);
            return ret;
        }
    }
    //校区信息
    class unti_areas : unit
    {
        public override result get_info()
        {
            if (!fee_power_query.valid())
                return Result((int)errcode.Interval, fee_power_query.msg);
            var ret = new wxwebapi<i_gate_fee_power>().invoke(i => i.areas, fee_power_query);
            return ret;
        }
    }
技术分享

 技术分享

c#设计模式(1)----简单工厂模式

标签:

原文地址:http://www.cnblogs.com/kmonkeywyl/p/5431855.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!