C#工厂模式的学习(1)简单工厂模式   http://blog.csdn.net/weixin_38661736/article/details/79049508

C#工厂模式的学习(2)工厂方法模式   http://blog.csdn.net/weixin_38661736/article/details/79050023

之前初学了工厂模式的简单工厂模式,现在我开始工厂方法模式的学习。项目包含以下类(该项目来源于http://download.csdn.net/download/coderjyf/9825340

C#工厂模式的学习(2)工厂方法模式

在上一篇介绍简单工厂模式的文章里面,有三个手机品牌,所以创建了三个类,以及将这三个类的共有方法封装在一个抽象类里面。但是如果将场景再细化一点呢?有N个手机品牌,然后这些手机品牌有着共有的方法(在这个项目里面为print),在同一个手机品牌里面,有着N个更为具体的手机产品,此时,对于手机品牌,我们可以建立一个抽象类,以此派生出更多的产品类,而对于手机品牌的工厂,我们也可以创建一个抽象的工厂类,然后派生出更多的具体的工厂类。

下面,贴上代码(以一个手机品牌为例如Iphone):

首先,创建一个MobilePhone的抽象类:

C#工厂模式的学习(2)工厂方法模式

然后,创建一个具体的手机品牌类,如Iphone,继承MobilePhone,实现MobilePhone里面的抽象方法

C#工厂模式的学习(2)工厂方法模式

然后,创建一个手机品牌的工厂抽象类,该类定义了一个抽象方法Create():

C#工厂模式的学习(2)工厂方法模式

之后,我们可以根据这个工厂抽象类,编写属于某一个手机品牌的具体的工厂类,并实现方法Create():

C#工厂模式的学习(2)工厂方法模式那么,我们根据手机品牌这一对象,创建了描述这一对象的抽象类MobilePhone,因此我们有多少个手机品牌,就派生多少个类即可。然后一个手机品牌里面会有不同的产品,根据工厂模式,我们会创建一个工厂类来保存对这个手机品牌的产品实例。但是当我们有多个手机品牌的时候呢?此时,我们可以先定义一个工厂类的抽象类,在这里为MobilePhoneFactory类,然后根据这个类,派生出更多的手机品牌的具体的工厂类。这样的模式就是工厂方法模式。

再看下具体的调用的代码:

C#工厂模式的学习(2)工厂方法模式

在这代码里面,首先用一个具体的手机品牌工厂类IphoneFactory来实例化MobilePhoneFactory抽象工厂类,然后再调用IphoneFactory里面的具体方法来实例化Mobilephone抽象类,从而调用到某一品牌的具体产品的方法。这样做,例如我们需要修改某一个品牌代码的时候,我们更改完具体的实现的代码的时候,这里引用的代码却不需要变更。因此,大大减少了维护的困难性,以及我们的工作量。

工厂模式方法,实际上还是相当于简单工厂模式,就是从单一工厂拓展为多个工厂。我认为,所有的设计模式,其实都是根据我们的需求来做的。当我们的需求扩大的时候,我们需要用其他的更适合的模式来开发。下篇将学习抽象工厂模式。



相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-01-26
  • 2022-01-04
  • 2021-10-16
  • 2022-02-13
  • 2021-08-22
  • 2021-06-17
猜你喜欢
  • 2022-12-23
  • 2021-11-04
  • 2021-10-23
  • 2022-12-23
  • 2022-01-26
  • 2021-11-17
  • 2021-12-14
相关资源
相似解决方案