设计模式——抽象工厂

来源:互联网 发布:淘宝评价在哪里写 编辑:程序博客网 时间:2024/06/07 00:49
系统要求:    公司有上海和北京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();        }    }}
原创粉丝点击