设计模式实验四
软件设计 石家庄铁道大学信息学院
实验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.注意编程规范。