抽象工厂模式

实验4:抽象工厂模式

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

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

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

 

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

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

 

实验要求:

1. 画出对应的类图;

 

2.提交源代码;

// 抽象工厂接口,定义创建不同肤色人类的方法

interface HumanFactory {

    Human createWhiteHuman();

    Human createBlackHuman();

    Human createYellowHuman();

}

 

// 白色人类工厂类,实现抽象工厂接口

class WhiteHumanFactory implements HumanFactory {

    @Override

    public Human createWhiteHuman() {

        return new WhiteMaleHuman();

    }

 

    @Override

    public Human createBlackHuman() {

        return new BlackMaleHuman();

    }

 

    @Override

    public Human createYellowHuman() {

        return new YellowMaleHuman();

    }

}

 

// 黑色人类工厂类,实现抽象工厂接口

class BlackHumanFactory implements HumanFactory {

    @Override

    public Human createWhiteHuman() {

        return new WhiteFemaleHuman();

    }

 

    @Override

    public Human createBlackHuman() {

        return new BlackFemaleHuman();

    }

 

    @Override

    public Human createYellowHuman() {

        return new YellowFemaleHuman();

    }

}

 

// 人类抽象接口,定义展示肤色的方法

interface Human {

    void showSkinColor();

}

 

// 白色肤色男性人类类,实现人类抽象接口

class WhiteMaleHuman implements Human {

    @Override

    public void showSkinColor() {

        System.out.println("白色肤色男性人类");

    }

}

 

// 白色肤色女性人类类,实现人类抽象接口

class WhiteFemaleHuman implements Human {

    @Override

    public void showSkinColor() {

        System.out.println("白色肤色女性人类");

    }

}

 

// 黑色肤色男性人类类,实现人类抽象接口

class BlackMaleHuman implements Human {

    @Override

    public void showSkinColor() {

        System.out.println("黑色肤色男性人类");

    }

}

 

// 黑色肤色女性人类类,实现人类抽象接口

class BlackFemaleHuman implements Human {

    @Override

    public void showSkinColor() {

        System.out.println("黑色肤色女性人类");

    }

}

 

// 黄色肤色男性人类类,实现人类抽象接口

class YellowMaleHuman implements Human {

    @Override

    public void showSkinColor() {

        System.out.println("黄色肤色男性人类");

    }

}

 

// 黄色肤色女性人类类,实现人类抽象接口

class YellowFemaleHuman implements Human {

    @Override

    public void showSkinColor() {

        System.out.println("黄色肤色女性人类");

    }

}

 

// 测试类

public class Main {

    public static void main(String[] args) {

        // 创建白色人类工厂对象

        HumanFactory whiteFactory = new WhiteHumanFactory();

        // 创建白色肤色男性人类对象并展示肤色

        Human whiteMale = whiteFactory.createWhiteHuman();

        whiteMale.showSkinColor();

        // 创建黑色肤色男性人类对象并展示肤色

        Human blackMale = whiteFactory.createBlackHuman();

        blackMale.showSkinColor();

        // 创建黄色肤色男性人类对象并展示肤色

        Human yellowMale = whiteFactory.createYellowHuman();

        yellowMale.showSkinColor();

 

        // 创建黑色人类工厂对象

        HumanFactory blackFactory = new BlackHumanFactory();

        // 创建白色肤色女性人类对象并展示肤色

        Human whiteFemale = blackFactory.createWhiteHuman();

        whiteFemale.showSkinColor();

        // 创建黑色肤色女性人类对象并展示肤色

        Human blackFemale = blackFactory.createBlackHuman();

        blackFemale.showSkinColor();

        // 创建黄色肤色女性人类对象并展示肤色

        Human yellowFemale = blackFactory.createYellowHuman();

        yellowFemale.showSkinColor();

    }

}

posted @ 2024-12-30 22:22  chrisrmas、  阅读(7)  评论(0)    收藏  举报