工厂方法模式:定义一个创建对象的接口,让子类决定实例化哪一个类
工厂模式有点:
1.将对象的创建进行封装,实现细节的隐藏,高层调用者不用关心创建的具体的产品类,只了解产品类的抽象,具体产品类的创建是由工厂进行决定。使调用者和产品的创建进行解耦。
标准类图:
一、 简单工厂模式(不需要抽象工厂)
产品抽象类:
public interface Product {
String getInfo();
}
具体产品类:
public class Iphone implements Product {
@Override
public String getInfo() {
return "this is the iphone";
}
}
public class Ipod implements Product{
@Override
public String getInfo() {
return "this is the ipod";
}
}
场景类:
public class Client {
public static void main(String[] args) throws Exception{
Factory factory = new Factory();
Product product = factory.createProduct(Ipod.class.getName());
System.out.println(product.getInfo());
}
}
二,工厂方法模式(抽象出工厂,每个具体的工厂声场不同的产品)
产品类没有任何变化。
工厂类进行修改:
public interface AbstractFactory {
Product createProduct();
}
public class IphoneFactory implements AbstractFactory{
@Override
public Product createProduct() {
return new Iphone();
}
}
public class IpodFactory implements AbstractFactory{
@Override
public Product createProduct() {
return new Ipod();
}
}
场景类:
public class Client {
public static void main(String[] args) throws Exception{
AbstractFactory iphoneFactory = new IphoneFactory();
AbstractFactory ipodFactory = new IpodFactory();
Product iphone = iphoneFactory.createProduct();
Product ipod = ipodFactory.createProduct();
System.out.println(iphone.getInfo());
System.out.println(ipod.getInfo());
}
}