抽象工厂模式

抽象工厂模式:

提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。

用反射,减少swith的代码(99~112行)

using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;

namespace 设计模式
{
    class User
    {
        private int id;
        public int ID
        {
            get { return id; }
            set { id = value; }
        }
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
    }
    interface IUser
    { 
        void Insert(User user);
        User GetUser(int id);
    }
    class SqlserverUser : IUser
    {
        public void Insert(User user)
        {
            Console.WriteLine("在SQL数据库中插入user数据的实现");
        } 
        public User GetUser(int id)
        {
            Console.WriteLine("在SQL根据id找出user用户名的具体实现");
            return null;
        }
    }
    class AccessUser : IUser
    {
        public void Insert(User user)
        {
            Console.WriteLine("在Access数据库中插入user数据的实现");
        }
        public User GetUser(int id)
        {
            Console.WriteLine("在Access根据id找出user用户名的具体实现");
            return null;
        }
    }
    class Worker
    {
        private int id;
        public int ID
        {
            get { return id; }
            set { id = value; }
        }
        private string name;
        public string Name
        {
            get { return name; }
            set { name = value; }
        }
    }
    interface IWork
    {
        void Insert(Worker worker);
        Worker GetWorker(int id);
    }
    class SqlserverWorker : IWork
    {
        public void Insert(Worker worker)
        {
            Console.WriteLine("在SQL数据库中插入worker数据的实现");
        }
        public Worker GetWorker(int id)
        {
            Console.WriteLine("在SQL根据id找出worker用户名的具体实现");
            return null;
        }
    }
    class AccessWorker : IWork
    {
        public void Insert(Worker worker)
        {
            Console.WriteLine("在Access数据库中插入worker数据的实现");
        }
        public Worker GetWorker(int id)
        {
            Console.WriteLine("在Access根据id找出worker用户名的具体实现");
            return null;
        }
    }



    class DataHandle
    {
        private static readonly string AssemblyName = "设计模式";
        private static string db = "Sqlserver";
        public void Readin()
        {
            db = Console.ReadLine();
        }
        public static IUser CreateUser()
        {
            string ClassName = AssemblyName + "." + db + "User";
            return (IUser)Assembly.Load("设计模式").CreateInstance(ClassName);
        }
    }
    class Costume
    {
        //客户端程序
        static void Main(string[] args)
        {
            User user = new User();
            Worker worker = new Worker();
            DataHandle dataHandle = new DataHandle();
            Console.WriteLine("enter Sqlserver or Access");
            dataHandle.Readin();
            IUser user1 = DataHandle.CreateUser();
            user1.GetUser(122);

        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值