设计模式-工厂方法模式
1.概述
工厂方法模式定义了一个创建对象的接口,但由其子类决定要实例化的类是哪一个。工厂方法让类把接口的实例化推迟到子类。
2.类图
3.角色
Creator:是一个抽象类,实现了所有的操作产品的方法,但不实现工厂方法,工厂方法由具体子类实现。
Product:所有产品必须实现这个接口。
ConCreteProduct:具体的产品类。
ConCreteCreator:具体的创建者类。
4.实现
功能:更具需要的产品,使用工厂方法创建具体产品。
public interface Product {
void printProduct();
}
public abstract class Creator {
public Product anOperation(String name){
Product product = null;
product = factoryMethod(name);
product.printProduct();
return product;
}
public abstract Product factoryMethod(String name);
}
public class ConcreteProductA implements Product{
public void printProduct() {
System.out.println(this.toString());
}
}
public class ConcreteProductB implements Product{
public void printProduct() {
System.out.println(this.toString());
}
}
public class ConcreteCreatorA extends Creator{
public Product factoryMethod(String name) {
if(name.equals("ConcreteProductA")){
return new ConcreteProductA();
}else if(name.equals("ConcreteProductB")){
return new ConcreteProductB();
}
return null;
}
}
测试:
public class Main {
public static void main(String[] args) {
Creator creator = new ConcreteCreatorA();
//生产一个A产品
Product productA = creator.anOperation("ConcreteProductA");
//生产一个B产品
Product productB = creator.anOperation("ConcreteProductB");
}
}
结果: