当前位置:编程学习 > JAVA >>

设计模式之工厂模式

       
1,  简单工厂
简单工厂模式(Simple Factory Pattern)属于类的创新型模式,又叫静态工厂方法模式(Static FactoryMethod Pattern),是通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类
简单工厂模式的核心思想就是:有一个专门的类来负责创建实例的过程 
 
不足:
由于工厂本身包括了所有的收费方式,商场是可能经常性的更改打折额度和返利额度,每次维护或扩展收费方法都要改动这个工厂,以致代码需重新编译部署,很麻烦
 
代码如下:
[csharp]  
//现金收费工厂类  
     class CashFactory  
     {  
         public static CashSupercreateCashAccept(string type)  
         {  
             CashSuper cs = null;  
             switch (type)  
             {  
                case "正常收费":  
                     cs = new CashNormal();  
    
                     break;  
                case "满300返100":  
                     CashReturn cr1 = newCashReturn("300", "100");  
                     cs = cr1;  
                     break;  
                case "打八折":  
                     CashRebate cr2 = newCashRebate("0.8");  
                     cs = cr2;  
                     break;  
    
             }  
             return cs;  
    
         }  
 
2,  工厂方法
工厂方法模式是定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
代码如下:
[csharp]  
//雷锋工厂  
  inte易做图ceIFactory  
  {  
      leifeng createleifeng();  
  
  }  
  //学雷锋的大学生工厂  
  classUndergraduateFactory : IFactory  
  {  
      public leifeng createleifeng()  
      {  
          return new Undergraduate();  
  
      }  
  }  
  //社区志愿者工厂  
  classVolunteerFactory : IFactory  
  {  
      public leifeng createleifeng()  
      {  
          return new Volunteer();  
  
      }  
       
  }  
工厂方法模式:针对每一个对象创建一个工厂
优点:
工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断移到了客户端代码来进行。如果需要加功能,本来是该工厂类的,而现在是修改客户端。
 
3,  抽象工厂
提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。
代码如下:
[csharp]  
//IFactory接口  
 inte易做图ce IFactory  
 {  
     Iuser createUser();  
 }  
 //SQLServerFactory类,实现IFactory接口,实例化SQLServerUser  
 class SQLServerFactory : IFactory  
 {  
     public Iuser createUser()  
     {  
         return new SQLServerUser();  
     }  
  
 }  
 //AccessFactory类,实现IFactory接口,实例化AccessUser  
 class AccessFactory : IFactory  
 {  
     public Iuser createUser()  
     {  
         return new AccessUser();  
     }  
  
 }<span style="font-family: KaiTi_GB2312; "> </span>  
抽象工厂方法:IFactory是一个抽象工厂接口,它里面应该包括所有的产品创建的抽象方法。
优点:
1,易于交换产品系列
2,它让具体的创建实例过程与客户端分离,客户端是通过它们的抽象接口操纵实例,产品的具体类名也别具体工厂的实现分离,不会出现在客户端代码中。
 
补充:软件开发 , Java ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,