抽象工厂模式、建造者模式结构图
1、试画出抽象工厂模式的模式结构图,并对模式进行分析。
抽象工厂(Abstract Factory):提供了创建产品的接口,它包含多个创建产品的方法 newProduct(),可以创建多个不同等级的产品。 具体工厂(Concrete Factory):主要是实现抽象工厂中的多个抽象方法,完成具体产品的创建。 抽象产品(Product):定义了产品的规范,描述了产品的主要特性和功能,抽象工厂模式有多个抽象产品。 具体产品(ConcreteProduct):实现了抽象产品角色所定义的接口,由具体工厂来创建,它同具体工厂之间是多对一的关系。
2、试画出建造者模式的模式结构图,并对模式进行分析。
产品角色(Product):它是包含多个组成部件的复杂对象,由具体建造者来创建其各个部件。 抽象建造者(Builder):它是一个包含创建产品各个子部件的抽象方法的接口,通常还包含一个返回复杂产品的方法 getResult()。 具体建造者(Concrete Builder):实现 Builder 接口,完成复杂产品的各个部件的具体创建方法。 指挥者(Director):它调用建造者对象中的部件构造与装配方法完成复杂对象的创建,在指挥者中不涉及具体产品的信息。
3、计算机包括内存(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();
}
}
