1. 简介
工厂方法是一种创建型模式,它定义一个创建对象的接口,让子类决定实例化哪一个类,可以使一个类的实例化延迟到其子类。它具有良好的扩展性,当有新产品类增加时,只需要新增一个具体的工厂类。调用者也不需要关心具体的产品及其创建过程,只需要知道它的接口。
2. UML类图
Product是一个产品接口,ConcreteProduct是具体的产品,Creator声明工厂方法,返回一个Product类型的对象,ConcreteCreator是具体工厂,定义了工厂方法,返回一个具体的Product。
3. 实例
Product接口:
public interface Phone {
void show();
}
具体产品:
public class IPhone implements Phone {
public void show() {
System.out.println("apple phone");
}
}
public class Galaxy implements Phone {
public void show() {
System.out.println("samsung phone");
}
}
抽象工厂:
public interface Creator {
Phone createPhone();
}
具体工厂:
public class AppleCreator implements Creator {
public Phone createPhone() {
return new IPhone();
}
}
public class SamsungCreator implements Creator {
public Phone createPhone() {
return new Galaxy();
}
}
测试
public class Test {
public static void main(String[] args) {
Creator creator = new SamsungCreator();
Phone phone = creator.createPhone();
phone.show();
}
}