标签:
陆陆续续整理总结设计模式一个多月了,也在逐渐的把项目中的一些代码进行一些优化。其实这次的总结整理处理让自己对设计模式有了新的认识之外, 对c#面向对象,反射,uml,设计原则都有新的认知。所以希望小伙伴能抽时间对设计模式进行一次全面的学习,我想只要认真学过的人都会有一定的提高。下 面先来说一下简单工厂模式。
简单工厂模式【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;
}
}
标签:
原文地址:http://www.cnblogs.com/kmonkeywyl/p/5431855.html