系统要求: 公司有上海和北京2个分公司,分别采用不同的数据库Beijing,Shanghai库。他们的业务逻辑,需求基本一样。要求设计一个系统实现信息集成。注意:以后公司还要在全国其他城市扩展业务。 采用抽象工厂模式: 将基本业务写到 Interface ,接口里面。 再分别在BeiJing项目和Shanghai项目中实现。 Interface文件 IFactory接口: using System; using System.Collections.Generic; using System.Text; namespace yu.Test { public interface IFactory { //定义 创建业务类 //定义一个项目中业务User类 IUser CreateUser(); //定义一个项目中业务Order类 IOrder CreateOrder(); } } //IOrder接口 using System; using System.Collections.Generic; using System.Text; namespace yu.Test { public interface IOrder { //得到订单ID String GetOrderID(); } } ShangHai文件: sFactory 类 using System; using System.Collections.Generic; using System.Text; namespace yu.Test { public class sFactory : IFactory //继承Interface 的IFactory,实现IFactory里面的方法。主要创建业务类 { //创建User类 public IUser CreateUser() { return new sUser(); } //创建Order类 public IOrder CreateOrder() { return new sOrder(); } } } //order类 using System; using System.Collections.Generic; using System.Text; namespace yu.Test { public class sOrder:IOrder { public String GetOrderID() { return "ShangHai20080621001"; } } } //北京文件 using System; using System.Collections.Generic; using System.Text; namespace yu.Test { public class bFactory : IFactory //继承Interface 的IFactory,实现IFactory里面的方法。主要创建业务类 { //创建User类 public IUser CreateUser() { return new bUser(); } //创建Order类 public IOrder CreateOrder() { return new bOrder(); } } } using System; using System.Collections.Generic; using System.Text; namespace yu.Test { public class bOrder:IOrder { public String GetOrderID() { return "BeiJing20080621001"; } } } //调用 using System; using System.Collections.Generic; using System.Text; using yu.Test; namespace TestMain { class Program { static void Main(string[] args) { IFactory ify = new sFactory();//引用Factory,指定为 sFactory,这个一般写到配置文件或者公共文件里面 IUser objUser = ify.CreateUser(); //接口前,类实例化在后 Console.WriteLine(objUser.GetUser()); IFactory ify2 = new bFactory();//引用Factory,指定为 bFactory,这个一般写到配置文件或者公共文件里面 IUser objUser2 = ify2.CreateUser(); Console.WriteLine(objUser2.GetUser()); Console.WriteLine(); IOrder shOrder=ify.CreateOrder(); Console.WriteLine("上海订单号: "+shOrder.GetOrderID()); IOrder bjOrder = ify2.CreateOrder(); Console.WriteLine("北京订单号: " + bjOrder.GetOrderID()); Console.Read(); } } }
设计模式——抽象工厂
最新推荐文章于 2024-09-15 22:03:14 发布