前言:

工厂模式是设计模式中比较常见的模式,想象一个万能的工厂,你输入不同的原料产出不同的产品,这就是工厂模式。

1.三种工厂

很多讲设计模式都会讲三种工厂,分别是:简单工厂、工厂方法、抽象工厂。
这种理解是不对的,看外文书或直译书一般很难看到三种工厂这种概念,国内这么讲是为了更好理解工厂模式。真正的工厂模式是第二种情况,第三种可以看作是工厂模式的引申,第一种算是入门。

2.工厂模式

工厂模式涉及到两类概念:产品和工厂。
首先定义产品,
抽象产品类:

public abstract class Product {public abstract void show();
}

具体产品类(这里加了一个面包属性 weight ):

public class Bread extends Product {private int weight;public Bread(int weight) {this.weight = weight;}public void show() {System.out.println("面包总共" + this.weight + "克");}
}

定义完了产品来说工厂,
抽象工厂:

public abstract class Factory {public abstract Product produce(int weight);
}

这里可能会有疑问,为啥会有一个传参 weight?因为工厂类终究是生产产品的,其方法要和产品有相关性。
具体工厂实现类:

public class BreadFactory extends Factory {public Product produce(int weight) {return new Bread(weight);}
}
2.测试

创建一个测试方法:

public class Main {public static void main(String[] args) {Factory factory = new BreadFactory(); Product product = factory.produce(12);product.show();}
}

输出:

面包总共12克
3.Tips

工厂方法虽然号称生产万物,但是实际中使用会有各种限制,不要迷恋设计模式,设计模式最多也是起代码设计指导作用。
如果还是对三种工厂模式感兴趣推荐看Java 设计模式——工厂模式

清泉影月
原创文章 94获赞 58访问量 16万+
关注私信
展开阅读全文