简单工厂模式

简单工厂模式

简单工厂模式,不属于设计模式,它违反了高类聚,低耦合。

优点:

  1. 使用方便,只需要指定需要哪种产品,至于产品如何创建不用关注。
  2. 可以屏蔽工厂的实现。

缺点:

  1. 每增加一个产品,需要修改原有的工厂。

java代码实例:

  1. 构建一个产品接口,约定一下每个产品现在有一个getName()方法
public interface Product {
    public String getName();
}
  1. 现实产品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";
    }
}
  1. 实现工厂类
public class ProductFactory {
    static public Product getProduct(String name) {
        if (name.equals("A")) {
            return new ProductA();
        } else {
            return new ProductB();
        }
    }
}
  1. 使用:
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());
    }
}

接下来我尽可能的用代码演示它的优缺点。

  1. 如果我现在要生产新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();
        }
    }
}
  1. 在需要的地方即可生产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());
    }
}

根据以上分析,缺点就是每添加一个产品,都要去修改工厂类。
优点:是屏蔽工厂的实现
所以推荐使用工厂模式。

你可能感兴趣的:(简单工厂模式)