2024.10.28

设计模式实验四

软件设计                  石家庄铁道大学信息学院

 

实验4:抽象工厂模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解抽象工厂模式的动机,掌握该模式的结构;

2、能够利用抽象工厂模式解决实际问题。

 
   

 

 

[实验任务一]:人与肤色

使用抽象工厂模式,完成下述产品等级结构:

 

实验要求:

1.  画出对应的类图;

 

 

2.提交源代码;

// 抽象工厂接口

interface AbstractFactory {

    Gender createGender();

    SkinColor createSkinColor();

}

 

// 具体工厂实现:男性工厂

class MaleFactory implements AbstractFactory {

    public Gender createGender() {

        return new Male();

    }

    public SkinColor createSkinColor() {

        // 根据需要选择不同肤色

        return new White(); // 例如选择白色

    }

}

 

// 具体工厂实现:女性工厂

class FemaleFactory implements AbstractFactory {

    public Gender createGender() {

        return new Female();

    }

    public SkinColor createSkinColor() {

        // 根据需要选择不同肤色

        return new Black(); // 例如选择黑色

    }

}

 

// 抽象产品:性别

interface Gender {

    void display();

}

 

// 抽象产品:肤色

interface SkinColor {

    void paint();

}

 

// 具体产品实现

class Male implements Gender {

    public void display() {

        System.out.println("男性");

    }

}

 

class Female implements Gender {

    public void display() {

        System.out.println("女性");

    }

}

 

class White implements SkinColor {

    public void paint() {

        System.out.println("白色");

    }

}

 

class Black implements SkinColor {

    public void paint() {

        System.out.println("黑色");

    }

}

 

class Yellow implements SkinColor {

    public void paint() {

        System.out.println("黄色");

    }

}

 

// 测试类

public class Client {

    public static void main(String[] args) {

        AbstractFactory maleFactory = new MaleFactory();

        Gender male = maleFactory.createGender();

        SkinColor white = maleFactory.createSkinColor();

       

        male.display();   // 输出:男性

        white.paint();    // 输出:白色

 

        AbstractFactory femaleFactory = new FemaleFactory();

        Gender female = femaleFactory.createGender();

        SkinColor black = femaleFactory.createSkinColor();

 

        female.display(); // 输出:女性

        black.paint();    // 输出:黑色

    }

}

3.注意编程规范。

posted @ 2024-12-25 09:57  cvjj  阅读(22)  评论(0)    收藏  举报