为什么需要工厂模式?
有一组类似的对象需要创建;在编码时不能预见需要创建哪种类的实例;系统需要考虑扩展性,不应依赖于产品类的实例如何被创建、组合和表达的细节。
一个抽象产品
public interface Phone {
public void whoami();
}
多个具体产品
public class Phone_16G implements Phone{
@Override
public void whoami() {
System.out.println("i am phone_16g");
}
public Phone_16G(){
whoami();
}
}
public class Phone_32G implements Phone{
@Override
public void whoami() {
System.out.println("i am phone_32g");
}
public Phone_32G(){
whoami();
}
}
public class Phone_64G implements Phone {
@Override
public void whoami() {
System.out.println("i am phone_64g");
}
public Phone_64G(){
whoami();
}
}
public class Phone_128G implements Phone {
@Override
public void whoami() {
System.out.println("i am phone_128g");
}
public Phone_128G(){
whoami();
}
}
一个工厂类
public class Factory {
public Phone createPhone(String type){
switch(type){
case "16G":
return new Phone_16G();
case "32G":
return new Phone_32G();
case "64G":
return new Phone_64G();
case "128G":
return new Phone_128G();
}
return null;
}
}
测试一下
public class SimpleFactoryMain {
public static void main(String[] args) {
Factory fac = new Factory();
Phone phone_16g = fac.createPhone("16G");
Phone phone_32g = fac.createPhone("32G");
Phone phone_64g = fac.createPhone("64G");
Phone phone_128g = fac.createPhone("128G");
}
}
输出如下
i am phone_16g
i am phone_32g
i am phone_64g
i am phone_128g