快捷搜索: 王者荣耀 脱发

抽象工厂模式、建造者模式结构图

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();
    }
}
经验分享 程序员 微信小程序 职场和发展