当前位置 > it书童 > java > 正文

抽象工厂模式

java it书童 2020-12-26 17:12:49 0赞 0踩 305阅读 0评论

定义:抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口

无须指定它们具体的类

场景:制作一门课程需要视频、文章。我们需要实例化课程时,同时实例化视频与文章。这两者同属于一个产品族

  • 产品族:小米手机 小米空调 小米净水器 都是小米产品

  • 产品等级结构:小米手机 苹果手机 华为手机 都是手机

定义各个产品的抽象类

public abstract class Video {
    public abstract void produce();
}
public abstract class Article {
    public abstract void produce();
}

工厂类包括了产品族的各个产品

public interface CourseFactory {
    Video getVideo();
    Article getArticle();
}

具体的实现类:

public class JavaVideo extends Video {
    @Override
    public void produce() {
        System.out.println("录制java课程视频");
    }
}
public class JavaArticle extends Article {
    @Override
    public void produce() {
        System.out.println("编写java课程手记");
    }
}

具体的工厂类

public class JavaCourseFactory implements CourseFactory {
    @Override
    public Video getVideo() {
        return new JavaVideo();
    }

    @Override
    public Article getArticle() {
        return new JavaArticle();
    }
}

调用

public class Test {
    public static void main(String[] args) {
        CourseFactory courseFactory = new JavaCourseFactory();
        Video video = courseFactory.getVideo();
        Article article = courseFactory.getArticle();
        video.produce();
        article.produce();
    }
}

优点:

  • 具体产品在应用层代码隔离,无须关心创建细节

  • 将一个系列的产品族统一到一起创建

缺点:

  • 规定了所有可能被创建的产品集合,产品族中扩展新的产品困难,需要修改抽象工厂的接口
关于我
一个文科出身的程序员,追求做个有趣的人,传播有价值的知识,微信公众号主要分享读书思考心得,不会有代码类文章,非程序员的同学请放心订阅
转载须注明出处:https://www.itshutong.com/articles/1006