Design Pattern -- 工厂模式
2018-04-02 本文已影响14人
androidjp
引言:工厂用于帮你完成对象的
new
操作,作用一般是:帮你创建对象。一般配合反射来使用。
一、场景
A卖果汁和雪糕,B也卖果汁和雪糕,但是A有自己的店铺和制作机器,也可以引进各种产品的制作图谱,让机器去生产就好;而B是纯手工自己弄,那么,很明显,A一天能卖出去的东西肯定更多,B效率这么低,就算我们愿意排队等,B一天也卖不了多少。于是B想要引进A的经营方式,引进机器。
二、设计与代码
- 首先,B定义好自己想要从事的活。【要生产什么】
public abstract class Product { public abstract void msg(); }
- 然后,得买一个什么都能学会的机子,给他什么图谱,他就能生产什么。
好,找到卖机器的店,看到机器的模型。
好,最终找到适合自己的生产机器。【终极版本,直接反射来学习各种图谱】public abstract class Factory { public abstract <T extends Product> T createProduct(Class<T> clazz); }
public class ConcreteFactory extends Factory{ @Override public <T extends Product> T createProduct(Class<T> clazz) { Product product = null; try { product = (Product) Class.forName(clazz.getName()).newInstance(); } catch (InstantiationException | IllegalAccessException | ClassNotFoundException e) { e.printStackTrace(); } return (T) product; } }
- 好了,万事具备,现在,B想生产果汁(
ProductA
) 和 雪糕(ProductB
),只需要这样:
public class IceCream extends Product{
@Override
public void msg() {
System.out.println("我是雪糕");
}
}
public class Juice extends Product {
@Override
public void msg() {
System.out.println("我是果汁");
}
}
-
结果