博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
设计模式_10_抽象工厂模式
阅读量:4161 次
发布时间:2019-05-26

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

抽象工厂模式

  • 定义:抽象工厂模式提供一个创建一系列相关相互依赖对象的接口
  • 无须指定它们具体的类
  • 类型:创建型
  • 客户端(应用层)不依赖于产品类实例如何被创建、实现等细节
  • 强调一系列相关的产品对象(属于同一产品族)一起使用创建对象需要大量重复的代码
  • 提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于具体实现
  • 优点:
    1. 具体产品在应用层代码隔离,无须关系创建细节
    2. 将一个系列的产品族统一到一起创建
  • 缺点:
    1. 规定了所有可能被创建的产品集合,产品族中扩展新的产品困难,需要修改抽象工厂的接口
    2. 增加了系统的抽象性和理解难度

产品等级结构与产品族:

在这里插入图片描述

  • 代码部分
public abstract class Article {
public abstract void produce();}
public abstract class Video {
public abstract void produce();}
public interface CourseFactory {
Video getVideo(); Article getArticle();}
public class JavaArticle extends Article {
@Override public void produce() {
System.out.println("java Article"); }}
public class JavaVideo extends Video {
@Override public void produce() {
System.out.println("java Video"); }}
public class JavaCourseFactory implements CourseFactory {
@Override public Video getVideo() {
return new JavaVideo(); } @Override public Article getArticle() {
return new JavaArticle(); }}
public class PythonArticle extends Article {
@Override public void produce() {
System.out.println("python Article"); }}
public class PythonVideo extends Video {
@Override public void produce() {
System.out.println("python Video"); }}
public class PythonCourseFactory implements CourseFactory {
@Override public Video getVideo() {
return new PythonVideo(); } @Override public Article getArticle() {
return new PythonArticle(); }}

类图:

在这里插入图片描述

  • JDK中使用抽象工厂模式的代码示例

java.sql.Connection

Statement createStatement() throws SQLException;PreparedStatement prepareStatement(String sql)        throws SQLException;

java.sql.Statement

ResultSet executeQuery(String sql) throws SQLException;

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

你可能感兴趣的文章
写给我们这些浮躁的系统工程师
查看>>
和平分手?你根本不知道吴恩达在百度经历了什么
查看>>
业余研究:关于腾讯与他的QQ帝国
查看>>
马云校长湖畔大学第三期讲义完整版
查看>>
iPhone为什么比Android好
查看>>
小程序的今天就是微信指数的明天
查看>>
从互联网到人工智能,BAT这七年来到底做了什么
查看>>
2012年十大科技趋势:Siri将震惊世界
查看>>
2017(第十届)中国绿公司年会马云演讲
查看>>
李彦宏:睡不着觉不是因对手
查看>>
从手Q与微信之争,看腾讯内在的真实矛盾与战略
查看>>
移动互联网的七宗败案
查看>>
互联网十大失败案
查看>>
小米颓势已现,生死劫命悬手机
查看>>
三大隐忧 三星未来路在何方?
查看>>
linux下各种进制转化最简单的的命令行
查看>>
结构体和联合体
查看>>
ACM(Association for Computing Machinery )组织的详细介绍
查看>>
unix高级编程之-命令行参数(实践一)
查看>>
无线网络加密方式对比 .
查看>>