• 设计模式学习笔记——抽象工厂(Abstract Factory)


    1.特点:当工厂方法无法满足多系列问题时,再重构为抽象工厂。

    2.概念:抽象工厂模式为一个产品家族提供了统一的创建接口。当需要这个产品家族的某一系列的时候,可以从抽象工厂中选出相对应的系列来创建一个具体的工厂类别。

    3.类图:

    4.程序实现:

    /// <summary>
        /// 抽象工厂类
        /// </summary>
        public interface IDatabaseFactory
        {
    
            IEmployee CreateEmployee();
    
            IUser CreateUser();
        }
    /// <summary>
        /// 与SqlServer相关产品的实现
        /// </summary>
        public class SqlServerDatabaseFactory : IDatabaseFactory
        {
    
            public IEmployee CreateEmployee()
            {
    
                return new SqlEmployee();
            }
    
            public IUser CreateUser()
            {
    
                return new SqlUser();
            }
    
        }
    
    
        /// <summary>
        /// 与Access相关产品的实现
        /// </summary>
        public class AccessDatabaseFactory : IDatabaseFactory
        {
    
            public IEmployee CreateEmployee()
            {
    
                return new AccessEmployee();
            }
    
            public IUser CreateUser()
            {
    
                return new AccessUser();
            }
    
        }
    /// <summary>
        /// 抽象产品
        /// </summary>
        public interface IUser 
        {
            User GetUser();
    
            bool SaveUser();
        }
    
        /// <summary>
        /// 抽象产品
        /// </summary>
        public interface IEmployee
        {
    
            Employee GetEmployee();
    
            bool SaveEmployee();
        }
    /// <summary>
        /// 与SqlServer相关的具体产品User
        /// </summary>
        public class SqlUser : IUser
        {
            public User GetUser()
            {
    
                return null;
            }
    
            public bool SaveUser()
            {
    
                return false;
            }
    
        }
    
        /// <summary>
        /// 与SqlServer相关的具体产品Employee
        /// </summary>
        public class SqlEmployee : IEmployee
        {
    
            public SqlEmployee()
            {
    
            }
    
            public Employee GetEmployee()
            {
    
                return null;
            }
    
            public bool SaveEmployee()
            {
    
                return false;
            }
    
        }
    
        /// <summary>
        /// 与Access相关的具体产品User
        /// </summary>
        public class AccessUser : IUser
        {
    
            public AccessUser()
            {
    
            }
    
            public User GetUser()
            {
    
                return null;
            }
    
            public bool SaveUser()
            {
    
                return false;
            }
    
        }
    
        /// <summary>
        /// 与Access相关的具体产品Employee
        /// </summary>
        public class AccessEmployee : IEmployee
        {
    
            public AccessEmployee()
            {
    
            }
    
            public Employee GetEmployee()
            {
    
                return null;
            }
    
            public bool SaveEmployee()
            {
    
                return false;
            }
    
        }
    

      

  • 相关阅读:
    全网首发|阿里资深技术专家数仓调优经验分享(上)
    用跨进程子类化技术实现对其它进程消息的拦载
    字符串与16进制互转
    Windows消息前缀
    Delphi 关于钩子函数HOOK (二)
    ACCESS SQL语法参考
    从内存中加载并运行exe
    浅谈Delphi中进程间的数据共享
    字符串排序等算法
    利用内存映射文件在两个进程间共享数据
  • 原文地址:https://www.cnblogs.com/ice-baili/p/4728370.html
Copyright © 2020-2023  润新知