微信搜索:小大白日志

工厂模式

分为3种:简单工厂模式、工厂方法模式、抽象工厂模式
  • 简单工厂能简单就简单,在允许的情况下尽可能的简单,但当有复杂的多层次等级结构时,所有的业务逻辑都在这个工厂类中判断实现,一旦这个工厂不能正常工作,整个系统都会受到影响
 1 public class A {
 2   public static void main(String[] args) {
 3     Factory factory = newFactory();
 4     System.out.println(factory.productString("蔬菜"));
 5     System.out.println(factory.productString("米饭"));
 6     System.out.println(factory.productInteger("一"));
 7     System.out.println(factory.productInteger("五"));
 8     }
 9 }
10  
11 public class Factory {
12     public String productString(String inputStr) {
13     if (inputStr.equals("水果"))
14        return "生产的水果";
15     if (inputStr.equals("蔬菜"))
16        return "生产的蔬菜";
17     return "请输入正确需求";
18 }
19  
20 public Integer productInteger(String inputStr) {
21     if (inputStr.equals("一"))
22         return 1;
23     if (inputStr.equals("二"))
24         return 2;
25     return 0;
26     }
27 }
28     

 

  • 工厂方法模式:定义一个工厂接口,不同的工厂继承这个接口创建不同的产品
 1 //抽象产品类
 2 abstract class Product{
 3     public abstract void show();
 4 }
 5 //A产品
 6 class ProductA extends Product{
 7     public void show(){
 8     System.out.println("这是A产品");
 9     }
10 }
11 //B产品
12 class ProductB extends Product{
13     public void show(){
14     System.out.println("这是B产品");
15     }
16 }
17 //抽象工厂类
18 abstract class Factory{
19     public abstract Product manuPro();
20 }
21 //A工厂
22 class FactoryA extends Factory{
23     public Product manuPro(){
24     return new ProductA();
25     }
26 }
27 //B工厂
28 class FactoryB extends Factory{
29     public Product manuPro(){
30     return new ProductB();
31     }
32 }
33  
34 //主类
35 public class Main{
public static void main(String[] args) {
36 //A工厂生产A产品 37 FactoryA factoryA=new FactoryA(); 38 Product product=factoryA.manuPro(); 39 product.show();//"这是A产品" 40 //B工厂生产B产品 41 FactoryB factoryB=new FactoryB(); 42 product=factoryB.manuPro(); 43 product.show();//"这是B产品"
   }
44 }

 

 

  • 抽象工厂模式:工厂方法模式侧重于同属性产品,而抽象工厂模式侧重于产品族不同属性的产品
类结构如下图:
 
 
  1 //空调
  2 public interface AirConditioner {
  3     void msg();
  4 }
  5 //风扇
  6 public interface Fan {
  7     void msg();
  8 }
  9 //冰箱
 10 public interface Fridge {
 11     void msg();
 12 }
 13 
 14 //创建3个美的产品类
 15 public class MediaAirConditioner implements AirConditioner {
 16     public void msg() {
 17         System.out.println("美的空调");
 18     }
 19 }
 20 public class MediaFan implements Fan {
 21     public void msg() {
 22         System.out.println("美的风扇");
 23     }
 24 }
 25 public class MediaFridge implements Fridge{
 26     public void msg() {
 27         System.out.println("美的冰箱");
 28     }
 29 }
 30 
 31 //工厂抽象类
 32 public interface Factory {
 33     Fridge createFridge();
 34     AirConditioner createAirConditioner();
 35     Fan createFan();
 36 }
 37 
 38 //美的工厂类
 39 public class MediaFactory implements Factory{
 40     public Fridge createFridge() {
 41         return new MediaFridge();
 42     }
 43     public AirConditioner createAirConditioner() {
 44         return new MediaAirConditioner();
 45     }
 46     public Fan createFan() {
 47         return new MediaFan();
 48     }
 49 }
 50 
 51 //创建3个海尔产品类
 52 public class haierAirConditioner implements AirConditioner {
 53     public void msg() {
 54         System.out.println("海尔空调");
 55     }
 56 }
 57 public class  haierFan implements Fan {
 58     public void msg() {
 59         System.out.println("海尔风扇");
 60     }
 61 }
 62 public class  haierFridge implements Fridge{
 63     public void msg() {
 64         System.out.println("海尔冰箱");
 65     }
 66 }
 67 //海尔工厂类
 68 public class HaierFactory implements Factory{
 69     public Fridge createFridge() {
 70         return new haierFridge();
 71     }
 72     public AirConditioner createAirConditioner() {
 73         return new haierAirConditioner();
 74     }
 75     public Fan createFan() {
 76         return new haierFan();
 77     }
 78 }
 79 
 80 
 81 //主类
 82 public class Main{
    public static void main(String[] args) {
83 //美的工厂类负责生产美的空调、风扇、冰箱 84 Factory mediaFactory=new MediaFactory(); 85 AirConditioner mediaAirConditioner=mediaFactory.createAirConditioner(); 86 mediaAirConditioner.msg();//美的空调 87 Fan mediaFan=mediaFactory. createFan(); 88 mediaFan.msg();//美的风扇 89 Fridge mediaFridge=mediaFactory. createFridge(); 90 mediaFridge.msg();//美的冰箱 91
92 //海尔工厂类负责生产海尔空调、风扇、冰箱 93 Factory haierFactory=new HaierFactory(); 94 AirConditioner haierAirConditioner=haierFactory.createAirConditioner(); 95 haierAirConditioner.msg();//海尔空调 96 Fan haierFan=haierFactory.createFan(); 97 haierFan.msg();//海尔风扇 98 Fridge haierFridge=haierFactory.createFridge(); 99 haierFridge.msg();//海尔冰箱
    }
100 }

 

posted @ 2019-06-20 01:06  明天喝可乐  阅读(184)  评论(0)    收藏  举报