抽象工厂模式、建造者模式结构图
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(); } }