zoukankan      html  css  js  c++  java
  • 简单工厂、抽象工厂

    //IUserInfoDal userInfoDal = StaticDalFactory.GetUserInfoDal();//简单工厂模式比上面的好一些
    简单工厂 //IUserInfoDal userInfoDal = StaticDalFactory.GetUserInfoDal();//简单工厂模式比上面的好一些
    抽象工厂 //IUserInfoDal userInfoDal = StaticAbstractFactory.GetUserInfoDal();抽象工厂比简单工厂更高级一点

    namespace My.OA.DalFactory
    {
    //职责:建立工厂模式,一个DAL入口:和上下文的概念一样,拿到上下文就可以操作数据库中的表,拿到这个工厂也就能操作他封装的所有实例

    //工厂:一种思想,一个实例,通过工厂被广泛调用,这就是一种面向对象的思维,代码重用和高维护性

    //简单工厂:生成方式还是需要修改代码的
    public class DalFactory
    {
    //一种依赖抽象编程
    public static IUserInfoDal GetUserInfoDal()
    {
    return new UserInfoDal();
    }

    }
    //抽象工厂:生产方式不修改代码(改配置),需要更规范的书写命名规范
    public class StaticAbstractFactory
    {
    public static IUserInfoDal GetUserInfoDal()
    {
    //dal实例由配置设置
    string DalAssemblyName = System.Configuration.ConfigurationManager.AppSettings["DalAssemblyName"];
    //需要更规范的书写命名规范
    return Assembly.Load(DalAssemblyName).CreateInstance(DalAssemblyName + ".UserInfoDal") as UserInfoDal;//反射是抽象工厂的实现方式之一,只是一种思想
    }

    }
    }

    <appSettings>
    <!--抽象工厂创建数据库访问层实例所在 程序集名称-->
    <add key="DalAssemblyName" value="My.OA.DAL" />
    </appSettings>
    <system.web>

  • 相关阅读:
    hdu 5387 Clock (模拟)
    CodeForces 300B Coach (并查集)
    hdu 3342 Legal or Not(拓扑排序)
    hdu 3853 LOOPS(概率DP)
    hdu 3076 ssworld VS DDD(概率dp)
    csu 1120 病毒(LICS 最长公共上升子序列)
    csu 1110 RMQ with Shifts (线段树单点更新)
    poj 1458 Common Subsequence(最大公共子序列)
    poj 2456 Aggressive cows (二分)
    HDU 1869 六度分离(floyd)
  • 原文地址:https://www.cnblogs.com/it-xcn/p/5746316.html
Copyright © 2011-2022 走看看