简单工厂模式、工厂模式、抽象工厂模式 与反射技术应用

       简单工厂模式:由一个抽象运算类,继承于抽象运算类的各种具体运算类和一个运算工厂类组成。其工作方式为:由抽象运算类定义两个运算数和虚运算方法,在其子类中通过重写虚函数来具体实现两个运算对象之间的运算。而确定这两个运算对象进行怎样的数学运算便是通过简单运算工厂类来决定的。也就是在简单工厂运算类中通过switch语句等逻辑判断来实现对运算方式的判断。需要在客户端需要输入参数;来给出判断条件。

       工厂模式:从整体上看简单工厂模式和工厂模式非常相似,他们的不同点在于运算工厂类。在工厂模式中决定两个运算数的运算方式仍然是由具体的运算类决定的,但是不同的具体运算类是由不同的具体运算工厂产出的,在不同运算工厂的基础上通过抽象便得到了抽象工厂类。也就是由一个抽象工厂产出具体工厂,再由具体工厂产出具体运算类,再由具体运算类决定两个数进行何种方式的运算并给出运算结果。

       工厂模式与简单工厂模式相比具有很多优点。如果使用简单工厂模式通过扩展增加新的运算类是没有问题的,但是在运算工厂类中就要增加相应的判断,这就违反了“开放扩展,关闭修改”的原则。而工厂模式则很好的解决了这个问题。通过增加具体运算工厂类和具体的运算类便可以轻易做到在关闭修改的条件下对程序进行扩展,而且省去了简单工厂模式运算类中庞大的switch判断语句。使程序更加简洁,易维护。

       抽象工厂模式解决的典型问题是数据库更换问题。预先设定条件值来对究竟进行那个类的实例化给出判断。与工厂模式只解决一个运算类对象相比抽象工厂模式主要应用于解决多个操作对象(对应数据库中的表)的问题。其实从简单工厂模式到工厂模式再到抽象工厂模式是类与类之间解耦的一个升级。

      反射技术的应用首先要引用System.Reflection这个命名空间。其格式为:类型变量名=(类型)Assembly.Load(“当前程序集名称”).CreateInstance(“当前命名空间名称.要实例化的类名”)。使用反射技术可以实现与switch语句相同的效果,但反射中通过将“要实例化的类名”用变量来代替可以使实例内容更为灵活。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值