当前位置: 首页 > wzjs >正文

建筑人才网档案查询网站优化排名软件推广

建筑人才网档案查询,网站优化排名软件推广,制作线下交易平台网站建设,北京模板网站建设全包抽象工厂设计模式 🚩什么是抽象工厂设计模式?🚩抽象工厂模式的特点🚩抽象工厂模式的结构🚩抽象工厂模式的优缺点🚩抽象工厂方法的Java实现🚩 代码总结🚩 总结 🚩什么是抽…

抽象工厂设计模式

  • 🚩什么是抽象工厂设计模式?
  • 🚩抽象工厂模式的特点
  • 🚩抽象工厂模式的结构
  • 🚩抽象工厂模式的优缺点
  • 🚩抽象工厂方法的Java实现
  • 🚩 代码总结
  • 🚩 总结

🚩什么是抽象工厂设计模式?

抽象工厂模式(Abstract Factory Design Pattern)是一种创建型设计模式,它提供了一种方式来创建一系列相关或相互依赖的对象,而无需指定它们的具体类。

工厂方法模式的区别在于,抽象工厂模式通常用于处理产品族的创建,确保创建的对象是兼容的。

🚩抽象工厂模式的特点

  • 封装性:抽象工厂模式将具体产品的创建过程封装在工厂内部,客户端无需关心具体的实现细节。

  • 扩展性:当需要增加新的产品族时,只需增加新的工厂类,符合开闭原则。

  • 一致性:抽象工厂模式确保创建的产品对象之间具有一致性,避免了不兼容的产品组合。

🚩抽象工厂模式的结构

抽象工厂模式通常包含以下几个角色:

  • 抽象工厂(Abstract Factory):定义创建一系列产品对象的接口。

  • 具体工厂(Concrete Factory):实现抽象工厂接口,负责创建具体的产品对象。

  • 抽象产品(Abstract Product):定义产品对象的接口。

  • 具体产品(Concrete Product):实现抽象产品接口,是具体工厂创建的对象。

  • 客户端(Client):使用抽象工厂和抽象产品接口来创建和使用产品对象。

🚩抽象工厂模式的优缺点

  • 优点:

    1. 隔离具体类的生成:客户端不需要知道具体的产品类,只需要知道抽象工厂和抽象产品即可。

    2. 易于交换产品系列:只需改变具体的工厂类,就可以改变整个产品系列。

    3. 保证一致性:抽象工厂模式确保创建的产品对象之间具有一致性。

  • 缺点:

    1. 增加系统复杂性:引入抽象工厂模式会增加类的数量,增加系统的复杂性。

    2. 不易扩展新产品:如果需要增加新的产品种类,需要修改抽象工厂接口及其所有子类,违反了开闭原则。

🚩抽象工厂方法的Java实现

代码地址:GitHub

  1. 首先定义两个抽象产品(Product),里面有info方法
  • ProductA:
/*** @author hanson.huang* @version V1.0* @InterfaceName ProductA* @Description 抽象产品A* @date 2025/3/21 15:32**/
public interface ProductA {public void info();
}
  • ProductB:
/*** @author hanson.huang* @version V1.0* @InterfaceName ProductB* @Description 抽象产品B* @date 2025/3/21 15:33**/
public interface ProductB {public void info();
}
  1. 其次定义抽象工厂(Creator),用于创建产品A和产品B
/*** @author hanson.huang* @version V1.0* @InterfaceName Factory* @Description 抽象工厂* @date 2025/3/21 15:31**/
public interface Factory {public ProductA createProductA();public ProductB createProductB();
}
  1. 现在创建具体产品(Concrete Product),实现抽象产品接口,重写info方法
  • ProductA的具体实现:

    • ProductA1:
    /*** @author hanson.huang* @version V1.0* @ClassName ProductA1* @Description 具体产品A1* @date 2025/3/21 15:36**/
    public class ProductA1 implements ProductA {@Overridepublic void info() {System.out.println("产品的信息:A1");}
    }
    
    • ProductA2:
    /*** @author hanson.huang* @version V1.0* @ClassName ProductA2* @Description 具体产品A2* @date 2025/3/21 15:36**/
    public class ProductA2 implements ProductA {@Overridepublic void info() {System.out.println("产品的信息:A2");}
    }
    
  • ProductB的具体实现:

    • ProductB1:
    /*** @author hanson.huang* @version V1.0* @ClassName ProductB1* @Description 抽象产品B1* @date 2025/3/21 15:37**/
    public class ProductB1 implements ProductB {@Overridepublic void info() {System.out.println("产品的信息:B1");}
    }
    
    • ProductB2:
    /*** @author hanson.huang* @version V1.0* @ClassName ProductB2* @Description 抽象产品B2* @date 2025/3/21 15:38**/
    public class ProductB2 implements ProductB {@Overridepublic void info() {System.out.println("产品的信息:B2");}
    }
    
  1. 最后,我们创建具体工厂(Concrete Creator)来去实现抽象工厂接口,负责创建具体的对象,现在让工厂1创建产品A1和B1,让工厂2来创建产品A2和B2
  • Factory1
/*** @author hanson.huang* @version V1.0* @ClassName FactoryA* @Description 具体工厂1,用于创建具体对象A1,B1* @date 2025/3/21 15:35**/
public class Factory1 implements Factory{@Overridepublic ProductA createProductA() {return new ProductA1();}@Overridepublic ProductB createProductB() {return new ProductB1();}
}
  • Factory2
/*** @author hanson.huang* @version V1.0* @ClassName Factory2* @Description 具体工厂2,用于创建具体对象A2,B2* @date 2025/3/21 15:40**/
public class Factory2 implements Factory{@Overridepublic ProductA createProductA() {return new ProductA2();}@Overridepublic ProductB createProductB() {return new ProductB2();}
}
  1. 最后来测试一下,可以发现我们下面的主函数代码,没有涉及到抽象工厂方法和抽象类,符合解耦原则
/*** @author hanson.huang* @version V1.0* @ClassName AbstractFactory* @Description main* @date 2025/3/21 15:31**/
public class AbstractFactory {public static void main(String[] args) {Factory1 factory1 = new Factory1();ProductA productA = factory1.createProductA();productA.info();Factory2 factory2 = new Factory2();ProductB productB = factory2.createProductB();productB.info();}
}

在这里插入图片描述

🚩 代码总结

在这个示例中,我们定义了两个产品族:ProductAProductB ,并为每个产品族提供了具体实现:ProductA1ProductA2ProductB1ProductB2 。然后,我们定义了一个抽象工厂 Factory,并提供了两个具体工厂 Factory1Factory1 来创建不同的产品。客户端代码通过选择不同的工厂来创建不同的产品

🚩 总结

抽象工厂设计模式是一种强大的创建型设计模式,特别适用于需要创建一系列相关或相互依赖对象的场景。它通过封装具体产品的创建过程,确保了产品之间的一致性和兼容性。然而,抽象工厂模式也增加了系统的复杂性,并且在扩展新产品种类时可能会违反开闭原则。因此,在使用抽象工厂模式时,需要根据具体的应用场景进行权衡。

创作不易,不妨点赞、收藏、关注支持一下,各位的支持就是我创作的最大动力❤️

在这里插入图片描述

http://www.dtcms.com/wzjs/235205.html

相关文章:

  • 建设手机网站公司网页设计用什么软件做
  • 做网站开发的是不是程序员百度seo搜索引擎优化方案
  • led高端网站建设做网站多少钱一年
  • 网站不备案不能访问南昌seo计费管理
  • 怎么查看网站是哪家公司做的湖南关键词优化快速
  • 电商平台网站定制百度广告竞价
  • 如何更好的推广app如何优化网页加载速度
  • 抖音代运营怎么做域名seo查询
  • 网站开发需要的技术的流程互联网行业最新资讯
  • 下载中心官方网站建设银行廊坊seo排名优化
  • 重庆网站建设流程石家庄seo全网营销
  • asp.net做网站怎么样seo外链建设的方法
  • 驻马店网站制作百度信息流怎么做效果好
  • 怎么建设境外网站昆明seo
  • dw做公司网站seo 网站排名
  • 武冈网站建设多少钱网络营销概述ppt
  • 网站建设需要什么资质建设公司网站大概需要多少钱?
  • 佛山市企业网站seo报价适合成人参加的培训班
  • 手机端网站排名盐城seo网站优化软件
  • 内部网站做域名解析到端口seo免费资源大全
  • 宿州精品网站建设百度网盘手机版
  • 关于党建网站建设的建议上海百度整站优化服务
  • 县级网站建设培训会网站开发软件有哪些
  • 医院网站建设 中企动力重庆网站关键词排名
  • 长春网站排名推广企业建站都有什么网站
  • wordpress修改目录河南网站关键词优化
  • 早晨设计 做网站设计吗视频号推广
  • 百度 网站速度诊断seo建站收费地震
  • 靠谱的建站公司哪家专业qq推广链接生成
  • 南宁seo湖南seo快速排名