今天说说工厂模式
工厂模式定义:提供
创建对象的
接口.
简单的表述工厂的使用,在我们想要生成某个对象的时候,一般我们都是A a=new A();用这种方式来生成一个对象。像这种不需要参数的倒还好说,如果需要传入参数。就可能很麻烦和复杂。这个时候我们就可以考虑使用工厂方法了,让工厂方法来封装我们想要生成的对象。
要生成对象的统一实现接口
package factorymethod;
/**
* 要生成的对象
*/
public interface Product {
}
工厂生产出的产品
package factorymethod;
/**
* 这个就是工程生产出的产品
*/
public class ConcreteProduct implements Product {
public ConcreteProduct() {
super();
}
private int level = 10;
private String target = "FR";
@Override
public String toString() {
return "ConcreteProduct [level=" + level + ", target=" + target + "]";
}
}
我们的
构造器,也就是工厂了
package factorymethod;
/**
* @author ZERO
*/
public abstract class Creator {
private Product fProduct;
public abstract Product factoryMethod();
public void anOperation() {
setfProduct(factoryMethod());
}
public Product getfProduct() {
return fProduct;
}
public void setfProduct(Product fProduct) {
this.fProduct = fProduct;
}
}
为每个不同产品生产的工厂
package factorymethod;
public class ConcreteCreator extends Creator {
public ConcreteCreator() {
super();
}
public Product factoryMethod() {
return new ConcreteProduct();
}
}
最后看看测试类
package factorymethod;
public class FactorymethodTest {
public static void main(String[] args) {
ConcreteCreator creator = new ConcreteCreator();
System.out.println(creator.factoryMethod().toString());
}
}
这个工厂模式代码示例中,在使用的时候可以做很多扩展的,需要你慢慢体会