4. 工厂模式
工厂模式
其实工厂模式,就是一个疯狂返回新对象的一个类的实例。就像流水线一样。
跟单例模式的区别是,单例模式返回对象唯一,而工厂模式疯狂返回新创建的对象。
public interface Factory {
Product createProduct();
}
public interface Product {
//定义产品的方法啊啥的。
}
public class ConcreteFactory implements Factory{
@Override
public Product createProduct() {
// TODO Auto-generated method stub
return new ConcreteProduct();
}
//如果产品的具体实现类比较懂
public Product createProduct(String type) {
// TODO Auto-generated method stub
if(type.equals("type1")) {
//return 对应type1的对象
}else if(type.equals("type2")) {
//return 对应type2的对象
}else {
return new ConcreteProduct();
}
//这个因为我没有建立那么多具体实现类,if语句判断后,
//如果if通过后的代码没有return语句,所以加个return防止报错
return null;
}
}
public class ConcreteProduct implements Product{
//实现产品的方法
}
public class Client {
private Factory factory;
public Client(Factory factory) {
this.factory = factory;
}
public void doSomething() {
Product product = factory.createProduct();
//to do something...
}
public static void main(String[] args) {
Client client = new Client(new ConcreteFactory());
client.doSomething();
}
}
静态工厂模式
就是把生产对象的方法变成静态的,这样可以直接调用
public class ConcreteFactory implements Factory{
@Override
public static Product createProduct() {
// TODO Auto-generated method stub
return new ConcreteProduct();
}
//如果产品的具体实现类比较懂
public static Product createProduct(String type) {
// TODO Auto-generated method stub
if(type.equals("type1")) {
//return 对应type1的对象
}else if(type.equals("type2")) {
//return 对应type2的对象
}else {
return new ConcreteProduct();
}
//这个因为我没有建立那么多具体实现类,if语句判断后,
//如果if通过后的代码没有return语句,所以加个return防止报错
return null;
}
}