实验4:抽象工厂模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解抽象工厂模式的动机,掌握该模式的结构;
2、能够利用抽象工厂模式解决实际问题。
[实验任务一]:人与肤色
使用抽象工厂模式,完成下述产品等级结构:
实验要求:
1. 画出对应的类图;
2. 提交源代码;
package RJSJ.test4.man;
public class BlackMan implements Man{
@Override
public void makeMan() {
System.out.println("我是黑种男人!");
}
}
package RJSJ.test4.man;
public interface Man {
public void makeMan();
}
package ruanjiansheji.shiyan4.man;
public class WhiteMan implements Man{
@Override
public void makeMan() {
System.out.println("我是白种男人!");
}
}
package ruanjiansheji.shiyan4.man;
public class YellowMan implements Man{
@Override
public void makeMan() {
System.out.println("我是黄种男人!");
}
}
package RJSJ.test4.utils;
import RJSJ.test4.woman.Woman;
import RJSJ.test4.man.Man;
public interface AbstractFactory {
public Man produceMan();
public Woman produceWoman();
}
package RJSJ.test4.utils;
import RJSJ.test4.woman.BlackWoman;
import RJSJ.test4.man.BlackMan;
import RJSJ.test4.man.Man;
import RJSJ.test4.woman.Woman;
public class BlackFactory implements
AbstractFactory{
@Override
public Man produceMan() {
return new BlackMan();
}
@Override
public Woman produceWoman() {
return new BlackWoman();
}
}
package RJSJ.test4.utils;
import RJSJ.test4.woman.WhiteWoman;
import RJSJ.test4.man.Man;
import RJSJ.test4.man.WhiteMan;
import RJSJ.test4.woman.Woman;
public class WhiteFactory implements
AbstractFactory{
@Override
public Man produceMan() {
return new WhiteMan();
}
@Override
public Woman produceWoman() {
return new WhiteWoman();
}
}
package RJSJ.test4.utils;
import RJSJ.test4.man.YellowMan;
import RJSJ.test4.woman.YellowWoman;
import RJSJ.test4.man.Man;
import RJSJ.test4.woman.Woman;
public class YellowFactory implements
AbstractFactory{
@Override
public Man produceMan() {
return new YellowMan();
}
@Override
public Woman produceWoman() {
return new YellowWoman();
}
}
package RJSJ.test4.woman;
public class BlackWoman implements
Woman{
@Override
public void makeWoman() {
System.out.println("我是黑种女人!");
}
}
package RJSJ.test4.woman;
public class WhiteWoman implements
Woman{
@Override
public void makeWoman() {
System.out.println("我是白种女人!");
}
}
package RJSJ.test4.woman;
public interface Woman {
public void makeWoman();
}
package RJSJ.test4.woman;
public class YellowWoman implements
Woman{
@Override
public void makeWoman() {
System.out.println("我是黄种女人!");
}
}
package RJSJ.test4;
import RJSJ.test4.man.Man;
import RJSJ.test4.utils.AbstractFactory;
import RJSJ.test4.utils.YellowFactory;
import RJSJ.test4.woman.Woman;
public class Client {
public static void main(String[] args) {
AbstractFactory factory=new YellowFactory();
Man man = factory.produceMan();
Woman woman = factory.produceWoman();
man.makeMan();
woman.makeWoman();
}
}
3.注意编程规范。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律