博客
关于我
设计模式深入浅出--4.抽象工厂coding以及JDK中的使用
阅读量:743 次
发布时间:2019-03-17

本文共 1413 字,大约阅读时间需要 4 分钟。

抽象工厂模式在课程系统中的应用

1. 定义 & 功能

抽象工厂模式提供了一种创建一系列相关或相互依赖对象的接口,无需关心具体的实现类。

2. 适用场景

当系统需要创建一系列相关的对象(如课程系统中的视频和笔记),且这些对象之间存在密切关系或依赖时,抽象工厂模式非常有用。

3. 应用场景:课程系统

在课程系统中,不仅需要创建视频,还需要创建对应的手记(笔记)。这要求系统能够同时创建多个相关对象,且如何创建这些对象的具体实现不影响系统的整体功能。

4. 类结构设计

4.1 产品接口

定义通用的产品接口,如Video和Article,确保所有产品都具有共同的方法 signatures。

4.2 抽象工厂接口

定义一个抽象工厂接口,提供创建产品的方法。例如:

public interface CourseFactory extends Factory {    Course createCourse();    Video createVideo();    Article createNote();}

4.3 具体工厂实现

实现抽象工厂接口,针对特定课程类型创建对应的产品。例如,JavaCourseFactory:

public class JavaCourseFactory implements CourseFactory {    public Course createCourse() {        return new JavaCourse();    }    public Video createVideo() {        return new JavaVideo();    }    public Article createNote() {        return new JavaArticle();    }}

4.4 产品具体实现

实现通用接口,具体实现各产品的功能。例如,JavaVideo和JavaArticle:

public class JavaVideo implements Video {    // 实现 video 相关方法}public class JavaArticle implements Article {    // 实现 note 相关方法}

5. 测试类设计

设计一个Test类来调用工厂创建课程。例如:

public class Test {    public static void main(String[] args) {        CourseFactory factory = new JavaCourseFactory();        Course course = factory.createCourse();        System.out.println("课程已创建:" + course.getName());    }}

6. 优点

  • 解耦:客户端不依赖具体实现,简化了维护工作。
  • 扩展性:方便添加新的课程类型,只需创建新的工厂和产品实现。
  • 7. 缺点

  • 耦合性:如果需要纵向扩展(增加产品等级结构),需修改工厂接口。
  • 封闭性:如果需要横向扩展(新增工厂),需新增工厂实现。
  • 8. 适用性

    在课程系统中,抽象工厂模式非常适合,因为它允许系统方便地创建多种课程类型的组合,而无需关心每个课程的具体实现。

    转载地址:http://gybhz.baihongyu.com/

    你可能感兴趣的文章
    npm发布包--所遇到的问题
    查看>>
    npm发布自己的组件UI包(详细步骤,图文并茂)
    查看>>
    npm和package.json那些不为常人所知的小秘密
    查看>>
    npm和yarn清理缓存命令
    查看>>
    npm和yarn的使用对比
    查看>>
    npm如何清空缓存并重新打包?
    查看>>
    npm学习(十一)之package-lock.json
    查看>>
    npm安装 出现 npm ERR! code ETIMEDOUT npm ERR! syscall connect npm ERR! errno ETIMEDOUT npm ERR! 解决方法
    查看>>
    npm安装crypto-js 如何安装crypto-js, python爬虫安装加解密插件 找不到模块crypto-js python报错解决丢失crypto-js模块
    查看>>
    npm安装教程
    查看>>
    npm报错Cannot find module ‘webpack‘ Require stack
    查看>>
    npm报错Failed at the node-sass@4.14.1 postinstall script
    查看>>
    npm报错fatal: Could not read from remote repository
    查看>>
    npm报错File to import not found or unreadable: @/assets/styles/global.scss.
    查看>>
    npm报错TypeError: this.getOptions is not a function
    查看>>
    npm报错unable to access ‘https://github.com/sohee-lee7/Squire.git/‘
    查看>>
    npm淘宝镜像过期npm ERR! request to https://registry.npm.taobao.org/vuex failed, reason: certificate has ex
    查看>>
    npm版本过高问题
    查看>>
    npm的“--force“和“--legacy-peer-deps“参数
    查看>>
    npm的安装和更新---npm工作笔记002
    查看>>