简单工厂(Simple Factory Pattern)模式

系统 1809 0

一,结构图

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

工厂类角色Creator (LightSimpleFactory): 工厂类在客户端的直接控制下(Create方法)创建产品对象。
抽象产品角色Product (Light): 定义简单工厂创建的对象的父类或它们共同拥有的接口。可以是一个类、抽象类或接口。
具体产品角色ConcreteProduct (BulbLight, TubeLight): 定义工厂具体加工出的对象。

二,示例代码

    public interface Light {
   public void turnOn();
   public void turnOff();
}

public class BulbLight implements Light {
   public void turnOn() {
      System.out.printLn("Bulb Light is Turned on");
   }
   public void turnOff() {
      System.out.printLn("Bulb Light is Turned off");
   }
}

public class TubeLight implements Light {
   public void turnOn() {
      System.out.printLn("Tube Light is Turned on");
   }
   public void turnOff() {
      System.out.printLn("Tube Light is Turned off");
   }
}

public class LightSimpleFactory {
   public Light Create(string lightType) {
      if(lightType == "Bulb")
         return new BulbLight();
      else if(lightType == "Tube")
         return new TubeLight();
      else
         return null;
   }
}

  

三,演化

      在有些情况下Simple Factory可以由抽象产品角色扮演,一个抽象产品类同时是子类的工厂。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

    public abstract class Light {
   public abstract void TurnOn();
   public abstract void TurnOff();

   public static Light create(string lightType)
   {
      if(lightType == "Bulb")
         return new BulbLight();
      else if(lightType == "Tube")
         return new TubeLight();
      else
         return null;
   }
}

public class BulbLight extends Light {
   public void turnOn() {
      System.out.printLn("Bulb Light is Turned on");
   }
   public void turnOff() {
      System.out.printLn("Bulb Light is Turned off");
   }
}

public class TubeLight extends Light {
   public void turnOn() {
      System.out.printLn("Tube Light is Turned on");
   }

   public void TurnOff() {
      System.out.printLn("Tube Light is Turned off");
   }
}
  

 

简单工厂(Simple Factory Pattern)模式


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论