前言:
Factory Method 是设计模式中比较常见的模式,想象一个万能的工厂,你输入不同的原料产出不同的产品,这就是工厂模式。
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 设计模式——工厂模式
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/16562.html