VB.net+工厂方法模式+思考
来源:互联网 发布:怎么卸载ubuntu系统 编辑:程序博客网 时间:2024/05/22 15:05
同上一个简单工厂模式一样,都是那计算器来说事,先看UML图。
在客户端(form1)中,通过对工厂子类的实现来操作具体的计算类。
Factory Method:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
和简单工厂模式不同的是这里把一个大的工厂(原先用来控制所有具体计算类)分解为了相应的小工厂,并且把实例化的过程放到了子类中来实现。
如果说在简单工厂模式中要添加一个新的类比如说M开N次方类,需要修改的地方为工厂内部的判断逻辑。
相应的放在工厂方法中时,对于所有类不用做任何修改,这样就遵循了开闭原则。不过工厂方法中的逻辑判断是放在客户端来进行的,所以要改动客户端中的判断。
思考:如果说我的简单工厂中通过反射机制来进行类的生成(这样就可以不用if—else或者是select case)因此也就不会因为新加一个类而改变其他类,这也遵循了开闭原则。相应的在工厂方法中通过反射也一样可以不对原有类进行改变,那么这样来说简单工厂和工厂方法哪个更好一些呢?相比较来说工厂方法反而麻烦了。
引用《Head First设计模式》中关于工厂方法模式的话:“我可以把你的客户端代码从需要实例化的具体类中解耦。或者如果你目前还不知道将来要实例化哪些具体类时,也可以用我。我的使用方法很简单,只要把我继承成子类,并实现我的工厂方法就可以了。”
关于简单工厂和工厂方法模式的比较不是很理解,下面给出vb.net版的工厂方法模式代码:
客户端:
工厂类:
运算类:
PS:又好好看了一下工厂方法,原来就是在从简单工厂中在抽象出来一个抽象的工厂类 ,这样灵活性就更高了。
- VB.net+工厂方法模式+思考
- VB.net+工厂方法模式+思考
- VB.NET机房收费 & 抽象工厂模式
- VB.NET机房收费 & 抽象工厂模式
- VB.net设计模式之工厂方法,抽象工厂方法(Factory Method Pattern,Abstract Factory Method Pattern)
- .NET设计模式之工厂方法模式
- .NET设计模式之工厂方法模式
- .NET设计模式-工厂方法模式
- .NET设计模式---工厂方法模式
- .NET设计模式---工厂方法模式
- .NET设计模式(2): 工厂方法模式
- NET设计模式(2): 工厂方法模式
- .NET设计模式(2): 工厂方法模式
- .NET设计模式(2): 工厂方法模式
- .NET设计模式(2): 工厂方法模式
- .NET设计模式(2): 工厂方法模式
- .NET设计模式(2): 工厂方法模式
- .NET设计模式(2): 工厂方法模式
- 印度英语特点汇总(汇总至各方)
- EmEditor 8.05 注册码
- 采用scp命令在Linux系统之间copy文件
- 岛
- 听了一节需求评审会
- VB.net+工厂方法模式+思考
- 1120 下标也能出大问题
- 祭奠一位我无比亲爱的亲人的离去
- 将Excel数据导入MySql
- CSS控制去掉textArea和input的边框
- 陆游和唐琬
- overloading注意点
- getElementById与getElementsByName 与getElementsByTagName总结
- 列个书单