简单工厂模式

概述

有时我们需要创建一些来自于相同父类的类的实例,为此可以专门定义一个简单工厂类来负责创建这些类的实例,这些被创建的实例具有共同的父类


模式实例

某手机厂专为各手机品牌生产手机,调用工厂的方法时传入参数,则根据传入的不同参数返回不同品牌的手机

在这里手机为父类,各品牌手机则为子类

抽象手机类 Phone

public abstract class Phone {

    public abstract void use();
}

具体手机类 HuaweiPhone

public class HuaweiPhone extends Phone {
    @Override
    public void use() {
        System.out.println("华为手机使用中....");
    }
}

具体手机类 XiaomiPhone

public class XiaomiPhone extends Phone {

    @Override
    public void use() {
        System.out.println("小米手机使用中....");
    }
}

工厂类 PhoneFactory

public class PhoneFactory {

    public static Phone producePhone(String brand) {

        if(brand.equalsIgnoreCase("huawei")) {
            System.out.println("生产华为手机...");
            return new HuaweiPhone();
        } else if (brand.equalsIgnoreCase("xiaomi")) {
            System.out.println("生产小米手机");
            return new XiaomiPhone();
        } else {
            System.out.println("暂无该手机生产....");
            return null;
        }
    }
}

模式优缺点

简单工厂模式优点如下:

  1. 实现了对责任的分割,客户免除直接创建产品对象的责任,而仅仅消费产品
  2. 通过引入配置文件,可以在不修改客户端代码的情况下更换和增加新的具体产品类,提高系统灵活性

简单工厂模式缺点如下:

  1. 工厂类集中了所有产品的创建逻辑,一旦不能正常工作,整个系统都将受到影响
  2. 系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,不利于系统维护
posted @ 2020-03-05 22:12  低吟不作语  阅读(623)  评论(1编辑  收藏  举报