实验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();
}
}