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

本文共 1438 字,大约阅读时间需要 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/

    你可能感兴趣的文章
    MySql中 delimiter 详解
    查看>>
    MYSQL中 find_in_set() 函数用法详解
    查看>>