设计模式 - 简单工厂模式

定义

原始社会自给自足(没有工厂),农耕社会小作坊(简单工厂,民间酒坊),工业革命流水线(工厂方法,自产自销),现代产业链代工厂(抽象工厂,富士康)

工厂模式:定义创建 对象的 工厂接口,具体的工厂实现来实现 产品对象的创建
简单工厂模式中创建实例的方法通常为静态(static)方法

优缺点

优点

  • 产品的 创建和 使用 分离;调用者可以免除 创建 "产品"对象的职责
  • 工厂类可以通过指定类型,生成不同的"产品"对象实例,调用者 无需知道"产品"对象的 具体内容
  • 可以结合 配置中心 ;在无需修改代码的前提下 添加功能

缺点

  • 简单工厂 的 工厂 单一,负责所有的 "产品"对象,对于复杂的业务,功能太重
  • 一旦工厂类异常;整个使用工厂的 系统 都将崩溃
  • 扩展相对困难;如果增加新的"产品"对象,必须修改 工厂方法;不符合“开闭原则”

使用场景

主要组成结构

简单工厂:根据指定类型 生产不同"产品"对象的 工厂类
抽象产品:定义工厂生产对象 的 公共部分
具体产品:工厂要具体创建的 对象

类图

简单工厂.jpg

代码实现

public class SimpleFactoryPattern {
    public static void main(String[] args) {
        final Product productA = SimpleFactory.creatProduct(1);
        productA.getProduct();
        final Product productB = SimpleFactory.creatProduct(2);
        productB.getProduct();
    }

    public interface Product{

        void getProduct();
    }

    static class ConcreteProductA implements Product{

        @Override
        public void getProduct() {
            System.out.println("对象A");
        }
    }
    static class ConcreteProductB implements Product{

        @Override
        public void getProduct() {
            System.out.println("对象B");
        }
    }

   static class SimpleFactory{

        public static final int SCENE_A = 1;
        public static final int SCENE_B = 2;
        public static final int SCENE_C = 3;

        public static Product creatProduct(int scene){
            switch (scene){
                case SCENE_A:
                    return new ConcreteProductA();
                case SCENE_B:
                    return new ConcreteProductB();
                default:
                    return new ConcreteProductA();
            }
        }
    }

}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值