一、简单工厂设计模式
创建对象不是直接创建,而是通过Factory创建,只需传入对应大参数就行。比如 BitmapFactory类
,我们不需要关心具体的实现,符合最少知识原则。
二、工厂方法模式
一句话就是:把对象的实现延迟到子类完成。
我们产品接口
public interface ProductApi {
public void product(String data);
}
生产各种产品
ProductA
public class ProductA implements ProductApi {
@Override
public void product(String data) {
System.out.println("生产产品A...");
}
}
ProductB
public class ProductB implements ProductApi {
@Override
public void product(String data) {
System.out.println("生产产品B...");
} }
ProductC
public class ProductC implements ProductApi {
@Override
public void product(String data) {
System.out.println("生产产品C...");
} }
当我们创建产品时
ProductAFactory
public class ProductAFactory {
@Override
public void creat(String data) {
ProductA product= new ProductA();
product.product(data);
}
}
ProductBFactory
public class ProductBFactory {
@Override
public void creat(String data) {
ProductB product= new ProductB();
product.product(data);
}
}
ProductCFactory
public class ProductCFactory {
@Override
public void creat(String data) {
ProductC product= new ProductC();
product.product(data);
}
}
使用工厂方法模式抽取,只有创建对象不同,调用方法都相同,所以可以这样
public abstract class ProductFactory {
public abstract Product newProduct();
public void export(String data){
Product product= newProduct();
product.product(data);
}
}
ProductAFactory变成了
public class ProductAFactory extends ProductFactory {
@Override
public Product newProduct() {
return new ProductA();
}
}
三、抽象工厂模式
1. 工厂方法模式的定义是:定义一个用于创建对象的接口,让子类决定实例化哪个类。
2.抽象工厂模式的定义:创建一组相关或者相互依赖的对象提供一个接口,而不需要指定他们具体的类。