zoukankan      html  css  js  c++  java
  • C#--简单工厂模式(使用 应用程序配置,反射,接口)

    以下是学习笔记:

    总体步骤:

    1,添加接口 IDAL

    namespace UseFactory
    {
        /// <summary>
        /// 打印接口
        /// </summary>
        public interface  IReport
        {
            void StartPrint();
        }
    }
    

    2,添加接口类的实现类 DAL

    namespace UseFactory
    {
       public  class ExcelReport:IReport 
        {
            public void StartPrint()
            {
                //在这里编写具体报表程序...
               
                MessageBox.Show("正在调用Excel报表程序...!");
            }
        }
    }
    

     

    namespace UseFactory
    {
       public  class WordRerport:IReport 
        {     
            public void StartPrint()
            {
                //在这里编写具体报表程序...
    
                MessageBox.Show("正在使用Word报表程序...!");
            }
        }
    }
    

      3,添加工厂方法(没有使用反射)

    namespace UseFactory
    {
        public static class Factory
        {
            //【1】定义接口变量
            static IReport objIReport = null;
            //【2】读取配置文件
            static string reportType = ConfigurationManager.AppSettings["ReportType"].ToString();
            //【3】实现接口类的对象
            public static IReport ChooseReportType()
            {
                switch (reportType)
                {
                    case "ExcelReport":
                        objIReport = new ExcelReport();
                        break;
                    case "WordReport":
                        objIReport = new WordRerport();
                        break;
                    case "OtherReport":
                        objIReport = new WordRerport();
                        break;
                }
                return objIReport;
            }
        }
    }
    

     3,添加工厂方法(使用反射)

        //public static class Factory
        //{
        //    //【1】定义接口变量
        //    static IReport objIReport = null;
        //    //【2】读取配置文件
        //    static string reportType = ConfigurationManager.AppSettings["ReportType"].ToString(); 
        //    //【3】使用反射创建实现接口类的对象
        //    public static IReport ChooseReportType()
        //    {
        //        objIReport = (IReport)Assembly.Load("UseFactory").CreateInstance("UseFactory." + reportType);
        //        //【4】返回接口变量
        //        return objIReport;
        //    }
    
        //}
    
    
        /// <summary>
        /// 用接口实现的简单工厂
        /// </summary>
        public static class Factory
        {
            //【1】读取配置文件
            static string reportType = ConfigurationManager.AppSettings["ReportType"].ToString();
            //【2】使用反射创建实现接口类的对象并以接口类型返回
            public static IReport ChooseReportType()
            {
                return (IReport)Assembly.Load("UseFactory").CreateInstance("UseFactory." + reportType);
            }
        }
    

      

     4,添加配置文件

    注意:App.config  配置文件中严格区分大小写

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
    	<appSettings >
    		<add key ="ReportType" value ="ExcelReport"/>
    	</appSettings>
    </configuration>
    

      5,调用工厂方法并实现功能

            //动态调用报表打印程序
            private void btnPrint_Click(object sender, EventArgs e)
            {
                //定义一个接口变量,并调用工厂类中的工厂方法
                IReport objReport = Factory.ChooseReportType();
                //调用接口的打印方法
                objReport.StartPrint();         
            }
    

      

     

      

  • 相关阅读:
    Sublime Text 乱码解决(Package Control 和 ConvertToUTF8插件安装)
    Hadoop搭建,上传文件时出现错误,没有到主机的路由
    Hadoop安装成功之后,访问不了web界面的50070端口怎么解决?
    centos7安装ifconfig命令
    Vmware Centos7 配置静态 ip 和 使宿主机和虚拟机互相 ping 通
    parallels desktop虚拟机与Mac共享网络设置方法
    NGINX轻松管理10万长连接
    Nginx upstream性能优化
    Linux性能调优、Linux集群与存储等
    Run time setting设置详解
  • 原文地址:https://www.cnblogs.com/baozi789654/p/13069131.html
Copyright © 2011-2022 走看看