一、概念
又叫静态工厂方法模式,它定义一个具体的工厂类负责创建一些类的实例 (对象创建工厂)。
优点 :客户端不需要再负责对象的创建,从而明确了各个类的职责
缺点 :这个静态工厂类负责所有对象的创建,如果有新的对象增加,或者某些对象的创建方式不同,就需要不断的修改工厂类,不利于后期的维护
二、UML图
三、代码示例
产品抽象类:phone
public abstract class AbstractPhone {
public abstract void name();
}
产品实现类一:apple phone
public class ApplePhone extends AbstractPhone {
@Override
public void name() {
System.out.println("apple phone");
}
}
产品实现类二:xiaomi phone
public class XiaoMiPhone extends AbstractPhone {
@Override
public void name() {
System.out.println("xiaomi phone");
}
}
产品实现工厂类:
public class PhoneFactory {
// 私有构造方法,禁止从创建工厂对象
private PhoneFactory(){}
public static AbstractPhone createPhone(String phoneName){
if("xiaomi".equals(phoneName)){
return new XiaoMiPhone();
}
if("apple".equals(phoneName)){
return new ApplePhone();
}
return null;
}
//上述方法不想一直加if,可以拆成一个一个的方法
}
Test
public class OrderPhone {
public static void main(String[] args) {
// 手机类型:小米手机,苹果手机
// 工厂:制造手机
// 需要什么手机直接找工厂要
//向工厂订购小米手机
AbstractPhone xiaomi = PhoneFactory.createPhone("xiaomi");
xiaomi.name();
//向工厂订购苹果手机
AbstractPhone apple = PhoneFactory.createPhone("apple");
apple.name();
}
}