24.11.17
实验4:抽象工厂模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解抽象工厂模式的动机,掌握该模式的结构;
2、能够利用抽象工厂模式解决实际问题。
[实验任务一]:人与肤色
使用抽象工厂模式,完成下述产品等级结构:

实验要求:
1.画出对应的类图;
2.提交源代码;
3.注意编程规范。
l.类图:

2.源代码:
// 定义抽象产品接口
interface MaleProduct {
void display();
}
interface FemaleProduct {
void display();
}
// 实现具体的产品类
class WhiteFemaleProduct implements FemaleProduct {
public void display() {
System.out.println("白色-女性产品");
}
}
class WhiteMaleProduct implements MaleProduct {
public void display() {
System.out.println("白色-男性产品");
}
}
class BlackFemaleProduct implements FemaleProduct {
public void display() {
System.out.println("黑色-女性产品");
}
}
class BlackMaleProduct implements MaleProduct {
public void display() {
System.out.println("黑色-男性产品");
}
}
class YellowFemaleProduct implements FemaleProduct {
public void display() {
System.out.println("黄色-女性产品");
}
}
class YellowMaleProduct implements MaleProduct {
public void display() {
System.out.println("黄色-男性产品");
}
}
// 抽象工厂
interface ProductFactory {
MaleProduct createMaleProduct();
FemaleProduct createFemaleProduct();
}
// 白色产品工厂
class WhiteProductFactory implements ProductFactory {
public MaleProduct createMaleProduct() {
return new WhiteMaleProduct();
}
public FemaleProduct createFemaleProduct() {
return new WhiteFemaleProduct();
}
}
// 黑色产品工厂
class BlackProductFactory implements ProductFactory {
public MaleProduct createMaleProduct() {
return new BlackMaleProduct();
}
public FemaleProduct createFemaleProduct() {
return new BlackFemaleProduct();
}
}
// 黄色产品工厂
class YellowProductFactory implements ProductFactory {
public MaleProduct createMaleProduct() {
return new YellowMaleProduct();
}
public FemaleProduct createFemaleProduct() {
return new YellowFemaleProduct();
}
}
// 客户端
public class Client{
public static void main(String[] args) {
ProductFactory whiteFactory = new WhiteProductFactory();
ProductFactory blackFactory = new BlackProductFactory();
ProductFactory yellowFactory = new YellowProductFactory();
FemaleProduct whiteFemale = whiteFactory.createFemaleProduct();
MaleProduct blackMale = blackFactory.createMaleProduct();
FemaleProduct yellowFemale = yellowFactory.createFemaleProduct();
whiteFemale.display(); // 输出:白色-女性产品
blackMale.display(); // 输出:黑色-男性产品
yellowFemale.display(); // 输出:黄色-女性产品
}
}
浙公网安备 33010602011771号