抽象工厂设计模式
来源:互联网 发布:mysql创建数据库语句 编辑:程序博客网 时间:2024/03/29 07:59
抽象工厂设计模式 解析
创建三层框架
表示层 an 类,业务逻辑层 anBAL 类 ,数据访问层 anDAL 类
定义抽象产品类 和抽象工厂类
anIDAL (类型 接口) Factory(类型 抽象类)
1.定音抽象产品 anIDAL 中的 接口 animal
namespace anIDAL
{ ///////////抽象产品 接口
public interface anI
{
string animal();
}
}
2. 分别实现 实体产品 anDAL (引用anIDAL)
Brid/anClass.cs 继承抽象产品 anI 实现接口 animal
using anIDAL;
namespace anDAL.Brid
{ /////////////////实体产品
public class anClass:anI
{
#region anI 成员
public string animal()
{
string name = "唧唧喳喳";
return name;
}
#endregion
}
}
Cat/anClass.cs 继承抽象产品 anI 实现接口 animal
using anIDAL;
namespace anDAL.Cat
{ /////实体产品
public class anClass:anI
{
#region anI 成员
public string animal()
{
string name = "喵喵……喵喵";
return name;
}
#endregion
}
}
Dog/anClass.cs 继承抽象产品 anI 实现接口 animal
using anIDAL;
namespace anDAL.Dog
{ //////////实体产品
public class anClass:anI
{
#region anI 成员
public string animal()
{
string name = "汪汪……汪汪";
return name;
}
#endregion
}
}
3. 实现抽象工厂 Factory (引用 anDAL(数据访问层) anIDAL(抽象产品类))
anFactory.cs 类
using anIDAL;
using System.Configuration;
namespace Factory
{
public abstract class anFactory
{
/// <summary>
/// /简单工厂设计 实现实体工厂
/// </summary>
/// <returns></returns>
public static anFactory create()
{
//////读取配置文件 获取类型
string name = ConfigurationManager.ConnectionStrings["animal"].ConnectionString;
anFactory af = null;
switch(name)
{
case "小狗":
af = new DogClass(); //实现 实体工厂DogClass 类
break;
case "小鸟":
af = new BridClass(); //实现 实体工厂 BridClass 类
break;
case "小猫":
af = new CatClass(); //实现 实体工厂 CatClass 类
break;
}
return af;
}
public abstract anI createFactory(); ///定义抽象工厂 createFactory
}
}
BridClass.cs //实体工厂 小鸟工厂 实现抽象类createFactory
using anDAL.Brid;
namespace Factory
{
public class BridClass:anFactory
{
public override anIDAL.anI createFactory()
{
return new anClass(); //返回实体产品类
}
}
}
CatClass.cs //实体工厂 小猫工厂 实现抽象类createFactory
using anDAL.Cat;
namespace Factory
{
public class CatClass:anFactory
{
public override anIDAL.anI createFactory()
{
return new anClass(); //返回实体产品类
}
}
}
DogClass.cs //实体工厂 小狗工厂 实现抽象类createFactory
using anDAL.Dog;
namespace Factory
{
public class DogClass:anFactory
{
public override anIDAL.anI createFactory()
{
return new anClass(); //返回实体产品类
}
}
}
4. 在业务逻辑层得使用 anBAL(引用 anIDAL(抽象产品类) Factory(抽象工厂类))
类 Class1.cs
using Factory;
using anIDAL;
namespace anBAL
{
public class Class1
{
private static anFactory afd = anFactory.create(); //调用实现抽象工厂 Factory anFactory.cs 类 中的简单工厂设计 实现抽象工厂对象
private static anI aI = null; //定义抽象产品类 的抽象产品对象
public Class1()
{
aI = afd.createFactory(); //使用抽象工厂实现抽象产品对象
}
public string animal()
{
return aI.animal(); //使用抽象产品对象调用实体产品
}
}
}
在数据表示层 显示信息
配置文件信息 将项目打包安装后如果要想实现小猫,小狗或小鸟的方式只需改变配置文件中的
connectionString的值即可用户面对的只是抽象产品
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<connectionStrings>
<add name="animal" connectionString="小狗"/>
</connectionStrings>
</configuration>
只需修改 connectionString 中的小狗/小鸟/小猫
- 抽象工厂设计模式
- 设计模式-----抽象工厂
- 抽象工厂设计模式
- 抽象工厂设计模式
- 抽象工厂设计模式
- 设计模式 抽象工厂
- 设计模式--抽象工厂
- 设计模式--抽象工厂
- 设计模式 抽象工厂
- 设计模式-抽象工厂
- 设计模式-> 抽象工厂
- 抽象工厂设计模式
- 设计模式--抽象工厂
- 【设计模式】抽象工厂
- 设计模式---抽象工厂
- 【设计模式-抽象工厂】
- 设计模式-抽象工厂
- 设计模式--抽象工厂
- Delphi更改IE首页代码
- 看《天下足球》之优雅杀手卡卡_观后感
- 转:关于C语言的位域(bitfield)
- Fuse类
- 今天入手一部Nokia 5802 手机(诺基亚触摸屏音乐手机)
- 抽象工厂设计模式
- ImgBurn最方便小巧的刻录软件
- ora-28000 the account is locked
- 面向对象的思考问题方式
- Win7使用篇:完美备份与还原
- 四.简单绘图
- 国外Flash源码的汉化
- 逻辑地址、线性地址、物理地址和虚拟地址之间的关系
- ORA-12560: TNS: 协议适配器错误的解决方法