Java设计模式_(创建型)_抽象工厂模式
来源:互联网 发布:python smtplib 编辑:程序博客网 时间:2024/05/22 03:22
引用百科:
抽象工厂模式是所有形态的工厂模式中最为抽象和最具一般性的一种形态。抽象工厂模式是指当有多个抽象角色时,使用的一种工厂模式。抽象工厂模式可以向客户端提供一个接口,使客户端在不必指定产品的具体的情况下,创建多个产品族中的产品对象。根据里氏替换原则,任何接受父类型的地方,都应当能够接受子类型。因此,实际上系统所需要的,仅仅是类型与这些抽象产品角色相同的一些实例,而不是这些抽象产品的实例。换言之,也就是这些抽象产品的具体子类的实例。工厂类负责创建抽象产品的具体子类的实例。
抽象工厂模式与工厂模式区别
抽象工厂模式是工厂方法模式的升级版本,他用来创建一组相关或者相互依赖的对象。他与工厂方法模式的区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式则是针对的多个产品等级结构。在编程中,通常一个产品结构,表现为一个接口或者抽象类,也就是说,工厂方法模式提供的所有产品都是衍生自同一个接口或抽象类,而抽象工厂模式所提供的产品则是衍生自不同的接口或抽象类。
在抽象工厂模式中,有一个产品族的概念:所谓的产品族,是指位于不同产品等级结构中功能相关联的产品组成的家族。抽象工厂模式所提供的一系列产品就组成一个产品族;而工厂方法提供的一系列产品称为一个等级结构。
如:需要根据产品要求生产出不同类型的电脑Computer,有intel组成的,也有amd组成的:
抽象工厂:AbStractFacory
产品族工厂:AmdFactory及IntelFactory
说明:根据不同的类型需求生产出同一产品组不同等级产品;
代码如下:
抽象工厂:
public interface AbstractFactory {public Cpu createCpu();public Memory createMemory();}
AMD工厂具体实现:
public class AmdFactory implements AbstractFactory {@Overridepublic Cpu createCpu() {System.out.println("create amd cpu!");return new Cpu(4);}@Overridepublic Memory createMemory() {System.out.println("create amd memory!");return new Memory(800);}}
Intel工厂具体实现:
public class IntelFactory implements AbstractFactory {@Overridepublic Cpu createCpu() {System.out.println("create intel cpu!");return new Cpu(6);}@Overridepublic Memory createMemory() {System.out.println("create intel memory!");return new Memory(75);}}
实体类:
public class Memory {private long size;public Memory(long size) {this.size = size;}}
public class Cpu {private long core;public Cpu(long core) {this.core = core;}}
客户端组装生产
public class Client {/** * @Description: 创建电脑组装,根据产品工厂 * @param factory */private static void createComputer(AbstractFactory factory){factory.createCpu();factory.createMemory();}//runpublic static void main(String[] args) {AbstractFactory factory = new IntelFactory();createComputer(factory);}}
create intel cpu!
create intel memory!
- Java设计模式_(创建型)_抽象工厂模式
- Java设计模式_抽象工厂模式
- java设计模式_抽象工厂模式
- Java设计模式_(创建型)_工厂模式
- java基础_设计模式_抽象工厂模式
- Java设计模式_创建模式_工厂模式
- Java设计模式_创建型_工厂模式_商品是这样生产的
- 大话设计模式_抽象工厂模式
- 设计模式_抽象工厂模式
- 设计模式03_抽象工厂模式
- 设计模式04_抽象工厂模式
- 设计模式_抽象工厂模式
- 设计模式05_抽象工厂模式
- 设计模式_抽象工厂模式(4)
- java设计模式03_抽象工厂模式
- 23种设计模式(3)_创建型_抽象工厂模式(Abstract Factory Pattern)
- 设计模式_创建型模式——工厂方法
- java设计模式之创建型模式-抽象工厂模式
- VMware中Ubuntu系统不全屏问题
- 数据结构与算法基础————基本概念和术语
- JVM习题(练石成金培训材料)
- GAN_Generative Adversarial Nets_阅读笔记
- 循环链表
- Java设计模式_(创建型)_抽象工厂模式
- Maven jar包下载不完整
- [渗透工具][中国菜刀]用法全解
- 继承方式对于访问权限的影响
- JZOJ5373. 【NOIP2017提高A组模拟9.17】信仰是为了虚无之人
- JavaScript-2-1:前端基本功
- python3-类的定义与方法
- 58. Length of Last Word
- PHP基础之类