工厂模式的实例解读:

工厂模式的解读:       

#region  店铺详情

/// <summary>

/// Supporters the detail.

/// </summary>

/// <returns></returns>

public ActionResult ShopDedail()

{

return View();

}

public ActionResult ShopDedailHelper()

{

ShopBussiness shop = new ShopBussiness();

IDictionary<string, string> pageParmas = PageParams();

Carpa.Web.Script.IHashObject Page = new Carpa.Web.Script.HashObject();

Carpa.Web.Script.IHashObjectList list = shop.GetShopList();

Page["rows"] = list;

return Json(Page, "text/html", JsonRequestBehavior.AllowGet);

}

#endregion

第一步:

//public IDictionary<string, string> PageParams = null;

public virtual IDictionary<string, string> PageParams()

{

//取得页面查询参数(总是以key:value方式存取,可以看做两条链表存储)

IDictionary<string, string> PageParams = new Dictionary<string, string>();

foreach (string sky in Request.QueryString.AllKeys)

{

PageParams.Add(sky,Request.QueryString[sky]);

}

return PageParams;

}

//取得页面查询参数(总是以key:value方式存取,可以看做两条链表存储)

//页面即是对象(数据+控件)

第二步:

public IHashObjectList GetShopList()

{

//返回值为HashObjectList是为了得到json数据源

using (DbHelper db = IProgram.Utils.AppUtils.CreateDbHelper())

{

//连接数据库(任意形式)

IProgram.Base.BaseService iserver = null;

//晚期实例化子类为超类或者接口对象,那么ContextListDataFactory应该返回IBaseData 或其子类型的对象

//而且看起来像是一座工厂对应一个类,因此ListDataFactoryType是个标志的集合(枚举集合,字符串集合,位集合等等)

第三步:

IListData list = IProgram.DAL.DataFactory.ContextListDataFactory(DAL.ListDataFactoryType.ShelvesGoodsListData);

//以上只是便于扩展,对于解决具体的问题,并不是必须的,

//then,在创建的实例中,可以进行各种各样的操作

第四步:

list._DbHelper = db;

iserver = new IProgram.BLL.ShopService(list);

int totalRecord = -1;

IHashObjectList ilist = iserver.FindHashList(new HashObject(), 0, 10, ref totalRecord);

if (ilist == null) return ilist;

foreach (IHashObject objRowData in ilist)

{

//objRowData["goodsname"] = "<td thid=‘th4‘ align=‘left‘ style=‘width: 150px;‘><div class=‘tableText‘ style=‘width: 150px;‘><a href=‘javascript:;‘ onmouseout=‘hideDiv()‘ onmouseover=‘showDiv(4)‘>" + objRowData.GetValue<string>("goodsname") + "</a></div></td>";

}

return ilist;

}

第三步:

public static IBaseData ContextBaseFactory(string className)

{

if (string.IsNullOrEmpty(className))

{

throw new ArgumentNullException("参数className 数据工厂为空。");

}

className = string.Format("IProgram.DAL.{0}", className);

//取得全名,准备动态创建类

Type type = SysUtils.GetAssembly("IProgram.DAL").GetType(className);

if (type == null)

{

throw new Exception(string.Format("【{0}】数据工厂对象未定义或命名空间不正确!", className));

}

return (IBaseData) Activator.CreateInstance(type);

//动态创建,格式化成基础类型+工作类型

}

第四步:

namespace IProgram.DAL

{

public enum ListDataFactoryType

{

CtgListData = 0,

DeptListData = 1,

ShelvesGoodsListData = 2,

}

}

以上就是对工厂模式的理解.

时间: 2024-08-30 17:59:45

工厂模式的实例解读:的相关文章

设计模式之 - 抽象工厂模式(实例)

跟简单工厂模式不一样的是, 父类会先声明几个子类即将用到的抽象方法, 和简单工厂模式的区别差不多就是这里了, 但是实际上还有什么不同的, 我需要做更多的实践才能明白, 先贴上一个比较贴近现实需求的实例 using UnityEngine; using System.Collections; /// <summary> /// 定义资源枚举类型 /// </summary> public enum ResourceEnum { None, UIResource, AudioResou

设计模式之 - 简单工厂模式(实例)

一个简单的计算器栗子,  计算值和结果是固定的, 运算过程是根据需求变化的. 工厂模式一般适用于: 若干具有相同父类的子类, 并且需要重复做一件事情的时候, 所以顾名思义叫做工厂模式, 重复的东西全让工厂做了~ 现在只是明白原理,但是还没真正在项目中实践过, 心得会不断的更新的 using UnityEngine; using System.Collections; public class Opration { public double NumberA{get;set;} public do

工厂模式实例

在看seajs源码时,发现的工厂模式的实例,觉得非常有用 /* 类型判断和计数函数 */ function isType(type) { return function(obj) { return Object.prototype.toString.call(obj) === "[object " + type + "]" } } var isObject = isType("Object") var isString = isType(&quo

js之简单工厂模式

简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况. 说的通俗点,就像公司茶水间的饮料机,要咖啡还是牛奶取决于你按哪个按钮. e.g. var BicycleShop = function(){}; BicycleShop.prototype = { sellBicycle : function( model ){ var bicycle; switch( model ){ case

php实现工厂模式

设计模式-使用php实现工厂方法模式 [概要] 创建型模式 定义一个用于创建对象的接口,让子类决定实例化哪一个类.Factory Method使用一个类的实例化延迟到其子类[GOF95] [结构图] [主要角色] 抽象产品(Product)角色:详细产品对象共同拥有的父类或接口 详细产品(Concrete Product)角色:实现抽象产品角色所定义的接口,而且工厂方法模式所创建的每个对象都是某详细产品对象的实例 抽象工厂(Creator)角色:模式中不论什么创建对象的工厂类都要实现这个接口,它

设计模式- 简单工厂模式、工厂方法模式及其比较

简单工厂模式及实例 前言工大有许多同学是做java的,大家都知道java最大的优点是它的完全OO化和它在多年的发展过程中吸收和总结了许多先进的框架与模式,其中工厂模式就是最常用的模式之一.下面我想将我在学习和实践过程中对工厂模式的认识与了解介绍给大家.由于笔者能力限制,在实践中也没参与过什么大的项目,笔者参与过的项目用到的工厂模式主要是简单工厂模式(Simple Factory)和工厂方法模式(Factory Method),所以笔者在本文主要介绍的是这两种模式.准备知识在OO设计领域,我们知道

C# 设计模式之工厂模式(一)

写在前面,PS一句:笔记专用,轻拍勿喷,看的不爽绕路前行即可. 一.举栗说明 1.剧情:某银行财务有三位员工,分别为A.B.C三人,主要任务就是去银行取钱,如下: class EmloyeeA: { public void DoSomeThing() { Console.WriteLine("EmloyeeA去取钱"); } } class EmloyeeB { public void DoSomeThing() { Console.WriteLine("EmloyeeB去取

设计模式之策略模式&amp;amp;简单工厂模式

学习设计模式已经有非常长一段时间了,事实上先前已经敲过一遍了.可是老认为没有学到什么,认识也不够深刻.如今趁着重构机房,再又一次来过,也不晚. 事实上在敲了机房之后,看看模式,事实上,曾经非常难理解.非常难看懂的代码一眼就能够看懂了,趁着有点感觉了.早点收获吧. 简单工厂模式: 简单地说简单工厂模式:非常easy变化的地方,就能够用到简单工厂模式. 实例: 举个样例:我们在逛商场时.正好商场促销,各种优惠活动:有满300返100 ,有打8折的.抽奖等等吧. 促销来讲,各种优惠活动事实上就是变化.

反射,工厂模式

该类不能运行,执行Test方法,需要空构造函数 demo3: 调用指定构造方法 demo2: 调用默认构造方法 demo1: 获得.class 字节码对象,对应Class对象. 3种方法 通过反射获取成员变量,修改私有变量是可见的 通过反射的方式执行类中的方法 自动装配 工厂模式: 使用接口, 接收通过工厂类返回来的实例对象. 工厂类通过读取配置文件,来决定实例化哪个类 package com.xiaofan.test; import java.lang.reflect.Constructor;