zoukankan      html  css  js  c++  java
  • 简单工厂、工厂方法、抽象工厂笔记

    之前博客相关链接:

    简单工厂模式

    简单工厂模式、工厂方法模式与抽象工厂模式的区别(转)

    一、简单工厂

    主要是三个角色:

    • 工厂类:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的具体业务逻辑。工厂类在客户端的直接调用下创建产品对象,它往往由一个具体的java类实现
    • 抽象产品:担任这个角色的类是工厂方法模式所创建的对象的父类,或它们共同拥有的接口。抽象产品角色可以用一个java接口或者抽象类来实现
    • 具体产品:工厂方法模式所创建的任何对象都是这个角色的实例,具体产品角色由一个java类实现

    最大的问题是:工厂类集中了所有产品的创建逻辑,形成了无所不能的全职类,违反了单一职责原则,最重要的是违反了开闭原则

    二、工厂方法

    工厂方法解决了简单工厂的缺点,简单工厂中的工厂就一个工厂类,工厂方法中抽象出一个顶层工厂。

    分析下工厂方法中的角色:

    • 抽象工厂:是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。

    • 具体工厂:这是实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且受到应用程序调用以创建产品对象。

    • 抽象产品:工厂方法模式所创建的对象的超类型,也就是产品对象的共同父类或共同拥有的接口

    • 具体产品:这个角色实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应。

      优点:遵守了开闭原则、

      缺点:每新增一个产品,都需要增加一个具体类和对象实现工厂,增大了开发量,另外系统复杂度也上升了。

    三、抽象工厂模式

    可以认为从简单工厂、工厂方法一步步演化成抽象工厂。

    相比于工厂方法,一个工厂不止于只生产一个具体产品。

  • 相关阅读:
    js 抓取距离的方法
    mysql 设置账户权限
    mysql 主从复制
    mysql 分区
    linux 安装samba
    linux 配置lamp
    linux 本地虚拟机配置
    linux 权限
    linux 磁盘分区
    mysql-进阶 if/while/case
  • 原文地址:https://www.cnblogs.com/heliusKing/p/12229730.html
Copyright © 2011-2022 走看看