简单有效的工厂模式

无论我们接触java也好,还是C#语言,学习过程中总会听见“工厂模式”,那么什么事工厂模式呢?以下是我自己对工厂的理解,工厂模式可以为我们生成我们想要的对象,过去我们创建一个对象需要A a=new A();需要new方法,可是我们一个程序里面像这样的new我们需要写的太多了,以后如果有需要更改的时候难道我们要查找每一个new方法去改我们的代码吗?工厂模式解决了这一点,我们可以利用工厂直接点(.)出来我们想要生成的类,就可以实现,以后再想改代码直接可以修改工厂里的方法即可。工厂模式同样还给我们快速开发提供了便利条件,一旦工厂写好了,其他程序员可以直接调用工厂里方法去生成自己想实例的类,不用考虑其他中间环节。这样大大提高了开发效率!

有人会说工厂不就是换个花样把new从前面搁到后面了嘛!说的很对我们来看一下,其实我们不应该出现new的,工厂里面的方法都是static方法切记!这样才可以直接被调用方法。回到刚刚说new这个问题,要想工厂里面不出现new,我们可以写配置文件达到我们的目的。

下面以petshop4视频里一段代码视频讲解来演示

微软规定在配置文件

.config里面

<!--比较简单的在配置文件中保存数据的方式-->

<appSettings>

  <add key="DataAccessClassName" value="PetShop.SQLServerDAL.Category"/>

<appSettings>

回到工厂中,你可以通过string className= System.Configuration.ConfigurationManager.AppSettings["DataAccessClassName"];可以提取出来我们所写的DataAccessClassName对应的value值。

接下来我们通过反射来通过类名创建对象实例,GetType 可以通过字符串形式类名进而获取描述类型的对象。

System.Type type=System.Type.GetType(className);

之后我们在借助类型动态创建对象实例

这就是简单的一个工厂了。

工厂通常是写数据访问层的人来写好,其他程序员进行应用的,但是一般简单程序练习时候还是需要我们自己来写。

在微软中petshop里注意看一下代码实际我们上面写的

<appSettings><appSettings>

 中<add>里 的value其实里面应该写的是两个值value=“实例的类,程序集”两个参数,上面只写一个是因为刚才的是一个工厂的测试项目,所有都在一个程序里,而我们以后一个解决方案写好多项,不是在同一个项中调用工厂,所以生成时候必须考虑生成在哪个程序集里面。

如果不想写两个参数我们可以这样来写,我们当时命名空间和程序集起同名时候是有好处的,我们可以把value里面只写程序集名,这样前面工厂类里之前classname就是程序集名,我们可以+“Category”这样拼成我们的classname,这样配置文件比较简单了就,但是刚刚接触工厂我们可以不用这样做。如果还想简化我们还可以利用提取公共方法进一步简化工厂类里的代码,但是这些都是我们熟练掌握简单创建工厂类之后的事情了。


原文地址:https://www.cnblogs.com/dylanblog/p/3582038.html