简单工厂模式
简单工厂模式,不属于设计模式,它违反了高类聚,低耦合。
优点:
- 使用方便,只需要指定需要哪种产品,至于产品如何创建不用关注。
- 可以屏蔽工厂的实现。
缺点:
- 每增加一个产品,需要修改原有的工厂。
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 class ProductFactory {
static public Product getProduct(String name) {
if (name.equals("A")) {
return new ProductA();
} else {
return new ProductB();
}
}
}
- 使用:
public class Main {
public static void main(String[] args) {
Product product = ProductFactory.getProduct("A");
System.out.println(product.getName());
product = ProductFactory.getProduct("B");
System.out.println(product.getName());
}
}
接下来我尽可能的用代码演示它的优缺点。
- 如果我现在要生产新ProductC,那么我需要增加一个ProductC,并且为工厂加入ProductC。
public class ProductC implements Product {
@Override
public String getName() {
return "this is product C";
}
}
public class ProductFactory {
static public Product getProduct(String name) {
if (name.equals("A")) {
return new ProductA();
} else if(name.equals("B")){
return new ProductB();
}else{
return new ProductC();
}
}
}
- 在需要的地方即可生产ProductC
public class Main {
public static void main(String[] args) {
Product product = ProductFactory.getProduct("A");
System.out.println(product.getName());
product = ProductFactory.getProduct("B");
System.out.println(product.getName());
product = ProductFactory.getProduct("C");
System.out.println(product.getName());
}
}
根据以上分析,缺点就是每添加一个产品,都要去修改工厂类。
优点:是屏蔽工厂的实现
所以推荐使用工厂模式。
网友评论