设计模式——抽象工厂

计算机包括内存(RAM)、CPU等硬件设备,根据图示的“产品等级结构-产品族”示意图,使用抽象工厂模式实现计算机设备创建过程并绘制相应的类图,并用面向对象语言编程模拟。

类图:
在这里插入图片描述

  • Java实现:
package cn.xiaov.abstractfactory.computer;

public class Computer {
    public static void main(String[] args) {
        AbstractFactory afPc=new PcFactory();
        afPc.getCPU().show();
        afPc.getRAM().show();

        AbstractFactory afMac = new MacFactory();
        afMac.getCPU().show();
        afMac.getRAM().show();
    }
}

interface CPU {
    void show();
}

class PcCPU implements CPU {

    @Override
    public void show() {
        System.out.println("PC的CPU");
    }
}

class MacCpu implements CPU {

    @Override
    public void show() {
        System.out.println("Mac的CPU");
    }
}

interface RAM {
    void show();
}

class PcRAM implements RAM {

    @Override
    public void show() {
        System.out.println("PC的RAM");
    }
}

class MacRAM implements RAM {

    @Override
    public void show() {
        System.out.println("Mac的RAM");
    }
}

interface AbstractFactory{
    RAM getRAM();
    CPU getCPU();
}

class PcFactory implements AbstractFactory{

    @Override
    public RAM getRAM() {
        return new PcRAM();
    }

    @Override
    public CPU getCPU() {
        return new PcCPU();
    }
}
class MacFactory implements AbstractFactory{
    @Override
    public RAM getRAM() {
        return new MacRAM();
    }

    @Override
    public CPU getCPU() {
        return new MacCpu();
    }
}

运行截图:
在这里插入图片描述

  • c++实现
#include<iostream>
using namespace std;

class CPU {
public:
	virtual void show() = 0;
};

class PcCPU :public CPU {
	void show() {
		cout << "PC的CPU" << endl;
	}
};

class MacCPU :public CPU {
	void show() {
		cout << "Mac的CPU" << endl;
	}
};

class RAM {
public:
	virtual void show() = 0;
};

class PcRAM :public RAM {
	void show() {
		cout << "PC的RAM" << endl;
	}
};

class MacRAM :public RAM {
	void show() {
		cout << "Mac的RAM" << endl;
	}
};

class AbstractFactory {
public:
	virtual RAM* getRAM() = 0;
	virtual CPU* getCPU() = 0;
};

class PcFactory :public AbstractFactory {
	RAM* getRAM() {
		return new PcRAM();
	}
	CPU* getCPU() {
		return new PcCPU();
	}
};

class MacFactory :public AbstractFactory {
	RAM* getRAM() {
		return new MacRAM();
	}
	CPU* getCPU() {
		return new MacCPU();
	}
};

int main() {
	AbstractFactory* afPc = new PcFactory();
	afPc->getCPU()->show();
	afPc->getRAM()->show();

	AbstractFactory* afMac = new MacFactory();
	afMac->getCPU()->show();
	afMac->getRAM()->show();

	return 0;
}

运行截图:
在这里插入图片描述

  • 5
    点赞
  • 77
    收藏
    觉得还不错? 一键收藏
  • 8
    评论
抽象工厂模式是一种创建对象的设计模式,它通过提供一个接口来创建一系列相关或相互依赖的对象,而无需指定具体的类。 在进行计算机设备的创建过程中,可以使用抽象工厂模式来实现。首先,在抽象工厂模式中需要定义一个抽象工厂接口,用于创建计算机设备的各个部件。该接口中可以定义创建内存CPU的方法。 ```java interface ComputerFactory { Memory createMemory(); CPU createCPU(); } ``` 然后,根据具体的产品,实现具体的工厂类和产品类。例如,创建Intel产品的工厂: ```java class IntelComputerFactory implements ComputerFactory { public Memory createMemory() { return new IntelMemory(); } public CPU createCPU() { return new IntelCPU(); } } ``` 创建AMD产品的工厂: ```java class AMDComputerFactory implements ComputerFactory { public Memory createMemory() { return new AMDMemory(); } public CPU createCPU() { return new AMDCPU(); } } ``` 同时,需要定义每个具体产品的类。例如,创建内存CPU的抽象类: ```java abstract class Memory { } abstract class CPU { } ``` 再具体实现Intel和AMD的内存CPU类: ```java class IntelMemory extends Memory { // 具体实现省略 } class IntelCPU extends CPU { // 具体实现省略 } class AMDMemory extends Memory { // 具体实现省略 } class AMDCPU extends CPU { // 具体实现省略 } ``` 最后,在客户端中使用抽象工厂来创建计算机设备: ```java class Client { public static void main(String[] args) { ComputerFactory factory = new IntelComputerFactory(); Memory memory = factory.createMemory(); CPU cpu = factory.createCPU(); // 根据需要进行后续操作 } } ``` 以上就是使用抽象工厂模式实现计算机设备创建过程的示例,根据图片所示的产品等级结构,可以根据具体的产品来实现对应的工厂类和产品类。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值