抽象工厂模式(优缺点、使用场景、具体实现)
抽象工厂模式
- 1、优缺点
- 2、使用场景
- 3、具体实现
抽象工厂模式提供了一个创建一系列相关或者相互依赖对象的接口,无需指定他们具体的类
1、优缺点
优点:
1.具体产品在应用层的代码隔离,无需关系创建的细节
2.将一个系列的产品统一到一起创建
缺点:
1.规定了所有可能被创建的产品集合,产品族中扩展新的产品困难;
2.增加了系统的抽象性和理解难度
2、使用场景
1.客户端(应用层)不依赖与产品类示例如何被创建、实现等细节
2.强调一系列相关的产品对象(数据同一产品族)一起使用创建对象需要大量的重复代码
3.提供一个产品类的库,所有的产品以同样的接口出现,使得客户端不依赖于具体实现
3、具体实现
创建手机工厂
public interface IpnoneProduct{void sendEamil();void trunOff();void trunOn();void callUp();}
模拟手机厂商小米制造手机
public class XiaomiPhone implements IpnoneProduct{@Overridevoid sendEamil(){System.out.pritln("小米手机发邮件")}@Overridevoid trunOff(){System.out.pritln("小米手机关机")}@Overridevoid trunOn(){System.out.pritln("小米手机开机")}@Overridevoid callUp(){System.out.pritln("小米手机打电话")}}
模拟手机厂商华为制造手机
public class HuaweiPhone implements IpnoneProduct{@Overridevoid sendEamil(){System.out.pritln("华为手机发邮件")}@Overridevoid trunOff(){System.out.pritln("华为手机关机")}@Overridevoid trunOn(){System.out.pritln("华为手机开机")}@Overridevoid callUp(){System.out.pritln("华为手机打电话")}}
模拟路由器工厂
public interface IRouterProduct{void start();void shutdown();void openWife();void setting();}
模拟小米路由器
public class XiaomiRouter implements IRouterProduct{@Overridepublic void start(){System.out.println("启动小米路由器");}@Overridepublic void shutdown(){System.out.println("关闭小米路由器");}@Overridepublic void openWife(){System.out.println("打开小米路由器wifi");}@Overridepublic void setting(){System.out.println("设置小米路由器");}
}
模拟华为路由器
public class HuaweiRouter implements IRouterProduct{@Overridepublic void start(){System.out.println("启动华为路由器");}@Overridepublic void shutdown(){System.out.println("关闭华为路由器");}@Overridepublic void openWife(){System.out.println("打开华为路由器wifi");}@Overridepublic void setting(){System.out.println("设置华为路由器");}
}
模拟华为、小米都是一个厂商
他们都有产品手机、路由器
创建抽象产品工厂
public interface IProductFactory{//生产手机IphoneProduct iphoneProduct();//生产路由器IRouterProduct routerProduct();
创建小米工厂
public class XiaomiFactory implements IProductFactory{@Overridepublic IphoneProduct iphoneProduct(){return new XiaomiPhone();}@Overridepublic IRouterProduct routerProduct(){return new XiaomiRouter();}
创建华为工厂
public class HuaweiFactory implements IProductFactory{@Overridepublic IphoneProduct iphoneProduct(){return new HuaweiPhone();}@Overridepublic IRouterProduct routerProduct(){return new HuaweiRouter();}
创建客户端
public class Client{public staic void main(String[] args){System.out.println("=============小米系列产品=========");//小米工厂XiaomiFactory xiaomiFactory = new XiaomiFactory();IphoneProduct iphoneProduct = xiaomiFactory.iphoneProduct();iphoneProduct.callup();iphoneProduct.sendEamil();IRouterProduct iRouterProduct = xiaomiFactory.routerProduct();iRouterProduct.openWife();System.out.println("=============华为系列产品=========");//小米工厂HuaweiFactory huaweiFactory = new HuaweiFactory();iphoneProduct = huaweiFactory.iphoneProduct();iphoneProduct.callup();iphoneProduct.sendEamil();iRouterProduct = huaweiFactory.routerProduct();iRouterProduct.openWife();}
}
分析类图:
抽象工厂模式(优缺点、使用场景、具体实现)相关推荐
- 【设计模式】抽象工厂模式 ( 简介 | 适用场景 | 优缺点 | 产品等级结构和产品族 | 代码示例 )
文章目录 一.抽象工厂模式简介 二.抽象工厂模式适用场景 三.抽象工厂模式优缺点 四.产品等级结构和产品族 五.抽象工厂模式代码示例 1.冰箱抽象类 2.美的冰箱实现类 3.格力冰箱实现类 4.空调抽 ...
- 设计模式-抽象工厂模式的应用场景及Java中对抽象工厂的应用
1. 什么是抽象工厂模式 抽象工厂模式提供了一个创建一系列相关或者相互依赖对象的接口,无需指定他们的类 抽象工厂模式(Abstract Factory Pattern)隶属于设计模式中的创建型模式,用 ...
- JavaScript 前端简单工厂模式、工厂方法模式、抽象工厂模式优缺点及详解 — 设计模式《二》
工厂模式 前言:就前端 JavaScript 语言来说,可以把简单工厂模式.工厂方法模式.抽象工厂模式归纳为一种即工厂模式: 一. 简单工厂模式 介绍/概述: 简单工厂模式的工厂类一般是使用静态方法, ...
- 抽象工厂模式(JAVA反射)
实例代码(JAVA):模式动机 在工厂方法模式中具体工厂负责生产具体的产品,每一个具体工厂对应一种具体产品,工厂方法也具有唯一性,一般情况下,一个具体工厂中只有一个工厂方法或者一组重载的工厂方法.但是 ...
- [设计模式] ------ 抽象工厂模式
抽象工厂模式 抽象工厂模式,就是对工厂方法模式加以改进而已,其实就是用简单工厂模式的套路创建各个工厂,后面和工厂模式就一模一样了. 其实就是相当于将创建哪个工厂的权利再次放给调用端. 调用端在调用的时 ...
- 23中设计模式之抽象工厂模式
抽象工厂模式的定义 定义: 为创建一组相关或互相依赖的对象提供一个接口,而且无须制定它们的具体类 抽象工厂模式的实现 两个产品族, 其类图如下: 抽象产品类代码如下: 产品A的1级和2级类代码如下: ...
- 设计模式(6)——抽象工厂模式(Abstract Factory Pattern,创建型)
1.概述 使用设计模式可以提高代码的可复用性.可扩充性和可维护性.抽象工厂模式(Abstract Factory Pattern)属于创建型模式,为创建一组相关或者相互依赖的对象(产品族)提供一个抽象 ...
- 关于抽象工厂模式的定义和实现
前言 大部分摘自:<设计模式之禅> 这本书 抽象工厂模式的定义 为创建一组相关或相互 依赖的对象提供一个接口,而且无须指定它们的具体类. 一个好理解的例子: 讲了女娲造人的故事.人是造出来 ...
- 【Python】设计模式(2)--抽象工厂模式
抽象工厂模式 亦称: Abstract Factory 意图 抽象工厂模式是一种创建型设计模式, 它能创建一系列相关的对象, 而无需指定其具体类. 问题 假设你正在开发一款家具商店模拟器. 你的代码中 ...
- 抽象工厂模式(图画版)
意图 抽象工厂模式是一种创建型设计模式, 它能创建一系列相关的对象, 而无需指定其具体类. 问题 假设你正在开发一款家具商店模拟器. 你的代码中包括一些类, 用于表示: 一系列相关产品, 例如 椅子C ...
最新文章
- 向深度学习三剑客学习四种科研精神(上)
- CBM——IT与业务融合的重要途径
- 封装、继承和构造函数
- VTK:Utilities之FullScreen
- sendBroadcast与sendStickyBroadcast的区别
- 怎么查看电脑有没有python_使用python获取电脑的磁盘信息方法
- 解决Secure Shell Client(SSH)客户端中文乱码的方法
- 网页几种保存类型与html文件格式,HTML 网页文件保存的格式为html或htm (5.0分)
- 计算机的DNS地址如何设置,如何设置电脑的DNS地址?
- 网页制作语言HTML5的应用
- 成功解决 -- flink.shaded.guava18.NumberFormatException: Not a version
- 华为云教程(弹性云服务器ECS)
- 赛灵思 Xilinx UG1506 - Versal ACAP 开发板系统设计方法指南(中文版) (v2021.2)
- TiDB数据库HTAP概述
- SQuirrel SQL Client数据库连接工具的配置与使用
- 织梦插件-全自动SEO织梦插件
- 【随笔】学会拒绝别人,聪明地说不,学会独处
- Mysql时间格式转换整理
- k8s之存储抽象nfs挂载
- 【信息奥赛题解】流感传染(详细题解 C++代码)