设计模式之工厂模式详解大数据
简单工厂模式的回顾:
简单工厂模式是指专门定义一个工厂类来负责创建产品类的实例,被创建的产品通常都具有共同的父类。
包含三个角色:
简单工厂(SimpleProductFactory)角色:工厂模式的核心,负责生产具体的产品。工厂类可以被外部用户即客户端调用,创建产品对象,从而实现外部用户即客户端和产品对象的解耦。
抽象产品(Product)角色:简单工厂模式所创建的具体产品对象的父类,负责描述所有产品对象的共有特征。
具体产品(Concrete Product)角色:是指具体的产品,是客户端调用工厂的目的就是获取产品对象,在工厂模式中通常拥有多个具体产品。一般来讲是抽象产品类的子类,实现了抽象产品类中定义的所有接口方法。
简单工厂模式优点:客户端与工厂进行交互,不再负责生产具体的产品对象,从而实现了解耦合。(单一职责,实现了解耦合)。
简单工厂模式缺点:由于这个工厂类负责全部的具体产品的创建,那么具体产品类特别多时,我们就需要去修改工厂的代码,从而增大了维护难度,这样就违反了设计模式经典的开闭原则。
解决这个缺点的方案就是工厂模式。
工厂模式组成:
1、抽象工厂角色(ProductFactory):是具体工厂角色必须继承的父类(Java中也可以通过实现接口来完成),这是工厂模式的核心。
2、具体工厂角色(ConcreteProductFactory):类似于简单工厂模式中的简单工厂角色,负责生产具体的产品对象。
3、抽象产品角色(Product):与简单工厂模式中的抽象产品角色一样,它是具体产品继承的父类(Java中也可以实现接口)。
4、具体产品角色(ConcreteProduct):简单工厂模式中的抽象产品角色一样,是指具体的产品,是客户端调用工厂的目的就是获取产品对象,在工厂模式中通常拥有多个具体产品。一般来讲是抽象产品类的子类,实现了抽象产品类中定义的所有接口方法。
举个栗子:
class Foot: "食品父类" def produce(self): print("Foot is produced") class Noodles (Foot): "面条子类" def produce(self): print("Noodles is produced") class Rice(Foot): "米饭子类" def produce(self): print("Rice is produced")
相关文章
- Vue3.0实现todolist之路由传参(query模式传参和params传参)
- 注册树模式
- seata AT模式 数据回滚不生效
- 【设计模式】行为型模式-第 3 章第 4 讲【迭代器模式】
- CIKM'22教程 | 超图挖掘的模式、工具和生成器,附259页ppt
- Istio 宣布引入全新的无 sidecar 数据平面模式,sidecar 模式依然保留
- MySQL InnoDB独立表空间模式的优点和缺点介绍详解数据库
- 消息队列的两种模式详解大数据
- 并发中的单例模式详解编程语言
- XP驱动Linux:跨界整合新模式(xp引导linux)
- 工厂方法模式(详解版)
- 化解构MySQL的模式化解析:释放数据的力量(mysql模式)
- Oracle模式下的导出数据操作(oracle模式导出)
- /客户端模式实现快速数据存取利用Redis实现快速服务器/客户端数据访问(redis以服务器)
- 数据格式掌握SQLServer模式与数据格式实现更佳数据存取(sqlserver模式和)
- Oracle开启归档模式:实现数据恒久性保存(oracle开启归档模式)
- 以Oracle关系模式设计的数据一目了然(oracle关系模式)
- 异地多活模式下redis之间的数据同步(异地多活redis同步)
- 腾讯云助力,大数据梦想掌控Redis模式(腾讯云redis模式)
- MySQL中如何使用匹配模式符(mysql中匹配模式符)
- Oracle主从模式实现数据同步的原理(oracle主从模式原理)
- 模式Redis的AOF模式维护服务器数据的利器(什么是redis的AOF)
- Oracle三范式实践让数据模式更简洁有序(oracle三范式举例)
- IISFTPPASV模式下更改端口范围的方法