美文网首页
简单工厂模式

简单工厂模式

作者: Doter | 来源:发表于2018-08-20 22:10 被阅读0次

    简单工厂模式

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

    优点:

    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());
        }
    }
    

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

    相关文章

      网友评论

          本文标题:简单工厂模式

          本文链接:https://www.haomeiwen.com/subject/stshiftx.html