前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式之3种工厂模式对比和简单介绍

设计模式之3种工厂模式对比和简单介绍

作者头像
SmileNicky
发布2019-01-17 16:12:56
5830
发布2019-01-17 16:12:56
举报
文章被收录于专栏:Nicky's blogNicky's blog

一、简单工厂模式

模式定义

简单工厂模式又称静态工厂模式。可以根据参数的不同返回不同类的实例。定义一个类来创建其它类的实例。

模式角色

简单工厂模式包含如下角色 Factory:工厂角色 Product:抽象产品角色 ConcreteProduct:具体产品角色

这里写图片描述
这里写图片描述

简单实例

代码语言:javascript
复制
public abstract class Produce{
    public abstract void m1()''
}
代码语言:javascript
复制
public class ConcreteProduct extends Produce{
    public void m1(){}
}
代码语言:javascript
复制
public class Factory{

    public static Produce methodA(){
        return new ConcreteProduct();//创建具体产品

    };
}

场景应用

简单工厂模式在jdk有不少应用,比如 java.text.DateFormat

代码语言:javascript
复制
public final static DateFormat getDateInstance();
public final static DateFormat getDateInstance(int style);
public final static DateFormat getDateInstance(int style,Locale
locale);

简单工厂模式适用场景: 工厂类负责创建的对象比较少;客户端只知道传入工厂类的参数,对象创建过程不会影响客户端代码

优缺点

优点:简单工厂模式将对象创建和本身业务处理分开,降低了耦合

缺点:工厂类集中了所有产品创建逻辑,一旦新增产品就得修改工厂类

二、工厂方法模式

定义

工厂方法模式:又称工厂模式,也叫虚拟构造器模式,属于构建型设计模式,工厂方法模式是在简单工厂模式上进行拓展,生产产品的过程由具体工厂类实现,基类只实现接口,这使得工厂方法模式可以在不修改工厂角色的情况下,引进新的产品。

模式结构

工厂方法模式包含如下结构:

Product:抽象产品

ConcreteProduct:具体产品

Factory:抽象工厂

ConcreteFactory:具体工厂

三、抽象工厂模式

模式角色

抽象工厂模式包含如下角色:

AbstractFactory:抽象工厂

ConcreteFactory:具体工厂

Product:具体产品

AbstractProduct:抽象产品

抽象工厂模式和工厂模式的区别

抽象工厂模式是所有形式的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式与工厂方法模式最大的区别在于,工厂方法模式针对的是一个产品等级结构,而抽象工厂模式则需要面对多个产品等级结构。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年04月24日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、简单工厂模式
    • 模式定义
      • 模式角色
        • 简单实例
          • 场景应用
            • 优缺点
            • 二、工厂方法模式
              • 定义
                • 模式结构
                • 三、抽象工厂模式
                  • 模式角色
                    • 抽象工厂模式和工厂模式的区别
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档