简单工厂、抽象工厂

//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>

时间: 2024-10-30 15:36:37

简单工厂、抽象工厂的相关文章

设计模式 ,类工厂 抽象工厂

工厂模式 import xml.etree.ElementTree as etree import json class JSONConnector: def __init__(self, filepath): self.data = dict() with open(filepath, mode='r', encoding='utf-8') as f: self.data = json.load(f) @property def parsed_data(self): return self.d

【转】设计模式:简单工厂、工厂方法、抽象工厂之小结与区别

简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式.其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性. 本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解. 简单工厂 简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例. 不修改代码的话,是无法扩展的. 工厂方法 工厂方法是针对每一种产品提供一个工厂类.通过不同的工厂实例来创建不同的产品实例. 在同一等级结构中,支持增加任意产品. 抽象工厂 抽象工厂是应

浅析 抽象工厂、工厂方法、简单(静态)工厂

----简单工厂 (也叫静态工厂模式):一个抽象产品抽象出多个具体产品类,一个具体工厂类 代码: //抽象产品角色 public interface Car{ public void drive(); } //具体产品角色 public class Benz implements Car{ public void drive() { System.out.println("Driving Benz "); } } public class Bmw implements Car{ pub

一口一个设计模式--简单工厂VS工厂VS抽象工厂

前几天一直在准备大学毕业,始终脱不开身,今天终于有时间进行设计模式的研究.咱们今天研究的话题是工厂家族三种设计模式的对比--简单工厂VS工厂VS抽象工厂. 经过细心推敲,我们不难得出:工厂模式是简单工厂的升级版,抽象工厂是工厂模式的升级版,简单工厂+抽象工厂是抽象工厂的升级版.知道了它们之间的宏观关系,下面我带它们从一次次蜕变了解它们为什么是这样的关系. 我们最原始的代码思维是把所有的实现都放在一个类中,功能虽然是实现了,但耦合性非常高,很不方便维护,好比活字印刷术之前的印刷,一个地方需要修改,

设计模式:简单工厂、工厂方法、抽象工厂之小结与区别 (转)

简单工厂,工厂方法,抽象工厂都属于设计模式中的创建型模式.其主要功能都是帮助我们把对象的实例化部分抽取了出来,优化了系统的架构,并且增强了系统的扩展性. 本文是本人对这三种模式学习后的一个小结以及对他们之间的区别的理解. 简单工厂 简单工厂模式的工厂类一般是使用静态方法,通过接收的参数的不同来返回不同的对象实例. 不修改代码的话,是无法扩展的. 工厂方法 工厂方法是针对每一种产品提供一个工厂类.通过不同的工厂实例来创建不同的产品实例. 在同一等级结构中,支持增加任意产品. 抽象工厂 抽象工厂是应

设计模式 之 抽象工厂

    工厂方法模式通过引入工厂等级结构,解决了简单工厂模式中工厂类职责太重的问题,但由于工厂方法模式中的每个工厂只生产一类产品,可能会导致系统中存在大量的工厂类,势必会增加系统的开销.此时,我们可以考虑将一些相关的产品组成一个"产品族",由同一个工厂来统一生产,这就是我们本文将要学习的抽象工厂模式的基本思想. Abstract Factory(抽象工厂模式):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. 在多年以后的某一天,当你陪着你的爱人去逛电器商场为家里添

Android源码中的抽象工厂---IPolicy

抽象工厂应用是很广的,在Android源码中,这个IPolicy就是一个简单的抽象工厂模式.下面分析一下IPolicy及其实现,以及创建的相关对象(源码基于5.0.0). 抽象工厂 意图 提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类. UML类图 通过继承抽象工厂,可以产生不同的产品系列 代码示例 abstract class AbsFactory{ public abstract AbsProductA createProduct1(); public abstract

PHP设计模式——抽象工厂

声明:本系列博客参考资料<大话设计模式>,作者程杰. 前面我们介绍了简单工厂和工厂方法设计模式,今天我们学习最后一个工厂--抽象工厂. 案例:追MM少不了请吃饭了,去麦当劳,只管向服务员说"两个B套餐"就行了.麦当劳就是B套餐的AbstractFactory,B套餐里含有汉堡, 鸡翅和饮料. 麦当劳或肯德基会根据B套餐的规格, 让汉堡Factory, 鸡翅Factory,饮料Factory分别生产对应B套餐的材料. 抽象工厂模式:提供一个创建一系列相关或相互依赖对象的接口,

【设计模式】——抽象工厂Abstract Factory

模式意图 提供对象的使用接口,隐藏对象的创建过程. 模式结构 AbstractFactory 提供创建对象的接口. ConcreteFactory 提供真正创建对象的实现类,用于组合并创建不同的对象,实现一个产品族. AbstractProduct 提供对象的使用接口. ConcreteProduct 提供真正的适用对象,隐藏该对象的创建过程,是工厂创建的对象. Client 使用者,通过抽象工厂接口,使用不同的具体工厂方法创建对象组合,从而直接使用对象,无需关注对象的创建过程. 适合场景 1

(转)抽象工厂_笔记

抽象工厂: 定义:为创建一组相关或相互依赖的对象提供一个接口,而且无需指定他们的具体类. 类型:创建类模式 类图: 调用类Client       工厂接口IFactory 产品接口IProduct +createProduct() +productMethod() 工厂实现 Factory 产品实现Product 抽象工厂模式与工厂方法模式的区别 抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象.他与工厂方法模式 的区别在于,工厂方法模式针对的是一个产品等级结构:而抽