设计模式系列-工厂方法模式-创新互联

      回顾下设计模式系列《工厂模式》那片文章,里面描述了如何利用工厂模式来模拟一个换灯泡的场景,该场景中模拟了:普通灯泡、节能灯泡、彩色灯泡。它们统一由一个工厂(工厂类)来创造,我们需要使用哪种灯泡时,只需通知工厂类给我们打造一个相同的灯泡即可,类图如下:

站在用户的角度思考问题,与客户深入沟通,找到舒兰网站设计与舒兰网站推广的解决方案,凭借多年的经验,让设计与互联网技术结合,创造个性化、用户体验好的作品,建站类型包括:网站制作、网站建设、企业官网、英文网站、手机端网站、网站推广、域名与空间、网页空间、企业邮箱。业务覆盖舒兰地区。

     设计模式系列-工厂方法模式

     由上面边的类图可见,所有类型的灯泡都由灯泡工厂来创建,那这个时候,制造灯泡的工厂因为企业扩大了,需要增加产量,那么此时一个工厂肯定是应付不过来了,而且当前一个工厂所造的灯泡种类也多,更加加大了工厂的制造压力,此时,企业扩建的最好办法就是,增加工厂,各自工厂都只专注于一种灯泡的制造。

   1.工厂方法模式

    首先我们来看看什么是工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类

    工厂方法模式类图如下:

    设计模式系列-工厂方法模式

     Product:定义工厂方法所创建的对象的接口。相当于上边场景中的灯泡抽象。

     ConcreteProduct:具体实现Product抽象的具体产品类。相当于上边场景中的具体灯泡。

     Creator:声明工厂方法,该方法返回一个Product类型的对象。

     ConcreteCreator:重定义工厂方法返回一个ConcreteProduct实例。

     可能这会大家看完这个类图会有点模糊,不过没关系,接下来我们利用工厂方法模式来实现我们上边的场景(企业扩大需要建立更多的工厂)。

     首先,企业扩大了,需要增加产量建立更多的工厂来创建,为了更好的提高生产效率,每个工厂只专注于生产一种种类的灯泡,利用工厂方法模式设计的类图如下:

    设计模式系列-工厂方法模式

     边分析边实现代码:

     第一步,工厂扩大了,所造的产品还是灯泡,所以我们还是要把灯泡先抽象出来,为何要抽象请参考《工厂模式》这篇文章。

  1. //灯泡的约定    
  2. public interface IBulb    
  3. {    
  4.     //统一的发光接口    
  5.     public void Luminescence();    
  6. }  

     第二步,还是实现目前所有种类的具体灯泡类型。代码如下:

  1. //灯泡    
  2. public class Bulb : IBulb//实现了灯泡的约定、标准  {        
  3.       //发光       
  4.        public void Luminescence()        
  5.       {           
  6.              //灯泡发光的实现        
  7.        }    
  8. }     
  9. //节能灯泡    
  10. public class FrugalBulb : IBulb //实现了灯泡的约定、标准    
  11. {        
  12.       //节能发光        
  13.       public void Luminescence()        
  14.      {            
  15.         //节能灯泡发光的实现        
  16.       }    
  17. }     
  18. //彩色灯泡    
  19. public class ColorBulb : IBulb    
  20. {        
  21.       //彩色发光        
  22.        public void Luminescence()        
  23.       {            
  24.             //彩色灯泡发光的实现        
  25.        }    
  26. }  
     第三步,因为增加了工厂,但是每个工厂都有一个共同的行为那就是制造灯泡,因此为了将来更方便的增加工厂,我们把工厂也抽象,代码如下:

创新互联www.cdcxhl.cn,专业提供香港、美国云服务器,动态BGP最优骨干路由自动选择,持续稳定高效的网络助力业务部署。公司持有工信部办法的idc、isp许可证, 机房独有T级流量清洗系统配攻击溯源,准确进行流量调度,确保服务器高可用性。佳节活动现已开启,新人活动云服务器买多久送多久。


当前名称:设计模式系列-工厂方法模式-创新互联
文章位置:http://myzitong.com/article/dppjgj.html