工厂模式的引入是为了管理对象的构造,对用户屏蔽构造过程,用户只从工厂拿取新对象。
简单工厂模式
用一个场景介绍简单工厂模式:某工厂想包揽所有产品生产,不仅提供很多不同类型的产品(iPhone 5,6,7...),还时不时生产新类型的产品(三星S8),而且客户不关心产品的类型细节只想使用公共方法。工厂采用如下方式:
- 根据客户要求/订单生产出不同产品
- 所有产品都由本工厂(类)唯一生产线制造出售(静态方法)
- 每增删一种新产品,就直接修改生产逻辑。
实例代码如下
abstract class Phone{
public abstract void use();
}
class iPhone extends Phone{
@Override
public void use(){System.out.print("iPhone");}
}
class S8 extends Phone{
@Override
public void use(){System.out.print("S8");}
}
class PhoneFactory{
public static Phone Manufacture(String type){
switch(type){
case "iPhone":return new iPhone();
case "S8":return new S8();
...
default: return null;
}
}
}