9.25

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

 

实验4:抽象工厂模式

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

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

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

 
   

 


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

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

 

实验要求:

1.  画出对应的类图;

 

2.提交源代码;

// 抽象工厂接口

interface HumanFactory {

    MaleHuman createMaleHuman();

    FemaleHuman createFemaleHuman();

}

 

// 抽象男性人类类

abstract class MaleHuman {

    public abstract String getColor();

    public abstract void talk();

}

 

// 抽象女性人类类

abstract class FemaleHuman {

    public abstract String getColor();

    public abstract void talk();

}

 

// 黄色人种男性类

class YellowMaleHuman extends MaleHuman {

    @Override

    public String getColor() {

        return "黄色";

    }

 

    @Override

    public void talk() {

        System.out.println("黄色人种男性说话。");

    }

}

 

// 白色人种男性类

class WhiteMaleHuman extends MaleHuman {

    @Override

    public String getColor() {

        return "白色";

    }

 

    @Override

    public void talk() {

        System.out.println("白色人种男性说话。");

    }

}

 

// 黑色人种男性类

class BlackMaleHuman extends MaleHuman {

    @Override

    public String getColor() {

        return "黑色";

    }

 

    @Override

    public void talk() {

        System.out.println("黑色人种男性说话。");

    }

}

 

// 黄色人种女性类

class YellowFemaleHuman extends FemaleHuman {

    @Override

    public String getColor() {

        return "黄色";

    }

 

    @Override

    public void talk() {

        System.out.println("黄色人种女性说话。");

    }

}

 

// 白色人种女性类

class WhiteFemaleHuman extends FemaleHuman {

    @Override

    public String getColor() {

        return "白色";

    }

 

    @Override

    public void talk() {

        System.out.println("白色人种女性说话。");

    }

}

 

// 黑色人种女性类

class BlackFemaleHuman extends FemaleHuman {

    @Override

    public String getColor() {

        return "黑色";

    }

 

    @Override

    public void talk() {

        System.out.println("黑色人种女性说话。");

    }

}

 

// 黄色人种工厂类

class YellowHumanFactory implements HumanFactory {

    @Override

    public MaleHuman createMaleHuman() {

        return new YellowMaleHuman();

    }

 

    @Override

    public FemaleHuman createFemaleHuman() {

        return new YellowFemaleHuman();

    }

}

 

// 白色人种工厂类

class WhiteHumanFactory implements HumanFactory {

    @Override

    public MaleHuman createMaleHuman() {

        return new WhiteMaleHuman();

    }

 

    @Override

    public FemaleHuman createFemaleHuman() {

        return new WhiteFemaleHuman();

    }

}

 

// 黑色人种工厂类

class BlackHumanFactory implements HumanFactory {

    @Override

    public MaleHuman createMaleHuman() {

        return new BlackMaleHuman();

    }

 

    @Override

    public FemaleHuman createFemaleHuman() {

        return new BlackFemaleHuman();

    }

}

 

 

 

 

public class Main {

    public static void main(String[] args) {

        // 创建黄色人种工厂

        HumanFactory yellowFactory = new YellowHumanFactory();

        // 创建黄色人种男性和女性

        MaleHuman yellowMale = yellowFactory.createMaleHuman();

        FemaleHuman yellowFemale = yellowFactory.createFemaleHuman();

        System.out.println("黄色人种男性肤色:" + yellowMale.getColor());

        yellowMale.talk();

        System.out.println("黄色人种女性肤色:" + yellowFemale.getColor());

        yellowFemale.talk();

 

        // 创建白色人种工厂

        HumanFactory whiteFactory = new WhiteHumanFactory();

        // 创建白色人种男性和女性

        MaleHuman whiteMale = whiteFactory.createMaleHuman();

        FemaleHuman whiteFemale = whiteFactory.createFemaleHuman();

        System.out.println("白色人种男性肤色:" + whiteMale.getColor());

        whiteMale.talk();

        System.out.println("白色人种女性肤色:" + whiteFemale.getColor());

        whiteFemale.talk();

 

        // 创建黑色人种工厂

        HumanFactory blackFactory = new BlackHumanFactory();

        // 创建黑色人种男性和女性

        MaleHuman blackMale = blackFactory.createMaleHuman();

        FemaleHuman blackFemale = blackFactory.createFemaleHuman();

        System.out.println("黑色人种男性肤色:" + blackMale.getColor());

        blackMale.talk();

        System.out.println("黑色人种女性肤色:" + blackFemale.getColor());

        blackFemale.talk();

    }

}

3.注意编程规范。

posted @ 2025-01-02 15:25  jais  阅读(29)  评论(0)    收藏  举报