工厂模式
工厂模式,简要来说就是需要什么样的产品调用对应产品工厂类进行创建即可。
优点:
- 使用方便,只需要指定需要哪种产品,至于产品如何创建不用关注。
- 利于扩展,且可以屏蔽工厂的实现。
java代码实例:
- 抽象一个产品,约定一下每个产品现在有一个getName()方法,
public interface Product {
public String getName();
}
- 实现产品A,B
public class ProductA implements Product {
@Override
public String getName() {
return "this is product A";
}
}
public class ProductB implements Product {
@Override
public String getName() {
return "this is product B";
}
}
- 抽象工厂
public interface ProductFactory {
public Product createProduct();
}
- 实现工厂:
public class ProductAFactory implements ProductFactory{
@Override
public Product createProduct() {
return new ProductA();
}
}
public class ProductBFactory implements ProductFactory{
@Override
public Product createProduct() {
return new ProductB();
}
}
- 使用:
public class Main {
public static void main(String[] args) {
Product product = new ProductAFactory().createProduct();
System.out.println(product.getName());
product = new ProductBFactory().createProduct();
System.out.println(product.getName());
}
}
接下来我尽可能的用代码演示它的优缺点。
- 如果我现在要生产新ProductC,那么我需要增加一个ProductC的实现及其工厂
public class ProductC implements Product {
@Override
public String getName() {
return "this is product C";
}
}
public class ProductCFactory implements ProductFactory{
@Override
public Product createProduct() {
return new ProductC();
}
}
- 在需要的地方即可生产ProductC
public class Main {
public static void main(String[] args) {
product = new ProductCFactory().createProduct();
System.out.println(product.getName());
}
}
根据以上分析,增加功能时,我并没有修改原有的代码。
优点:
- 屏蔽工厂的实现
- 实现‘开-闭 原则’