实验4:抽象工厂模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解抽象工厂模式的动机,掌握该模式的结构;
2、能够利用抽象工厂模式解决实际问题。
[实验任务一]:人与肤色
使用抽象工厂模式,完成下述产品等级结构:
实验要求:
1. 画出对应的类图;
2. 提交源代码;
3.注意编程规范。
package ruanjiansheji.shiyan4.man; public class BlackMan implements Man{ @Override public void makeMan() { System.out.println("我是黑种男人!"); } } package ruanjiansheji.shiyan4.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 ruanjiansheji.shiyan4.utils; import ruanjiansheji.shiyan4.woman.Woman; import ruanjiansheji.shiyan4.man.Man; public interface AbstractFactory { public Man produceMan(); public Woman produceWoman(); } package ruanjiansheji.shiyan4.utils; import ruanjiansheji.shiyan4.woman.BlackWoman; import ruanjiansheji.shiyan4.man.BlackMan; import ruanjiansheji.shiyan4.man.Man; import ruanjiansheji.shiyan4.woman.Woman; public class BlackFactory implements AbstractFactory{ @Override public Man produceMan() { return new BlackMan(); } @Override public Woman produceWoman() { return new BlackWoman(); } } package ruanjiansheji.shiyan4.utils; import ruanjiansheji.shiyan4.woman.WhiteWoman; import ruanjiansheji.shiyan4.man.Man; import ruanjiansheji.shiyan4.man.WhiteMan; import ruanjiansheji.shiyan4.woman.Woman; public class WhiteFactory implements AbstractFactory{ @Override public Man produceMan() { return new WhiteMan(); } @Override public Woman produceWoman() { return new WhiteWoman(); } } package ruanjiansheji.shiyan4.utils; import ruanjiansheji.shiyan4.man.YellowMan; import ruanjiansheji.shiyan4.woman.YellowWoman; import ruanjiansheji.shiyan4.man.Man; import ruanjiansheji.shiyan4.woman.Woman; public class YellowFactory implements AbstractFactory{ @Override public Man produceMan() { return new YellowMan(); } @Override public Woman produceWoman() { return new YellowWoman(); } } package ruanjiansheji.shiyan4.woman; public class BlackWoman implements Woman{ @Override public void makeWoman() { System.out.println("我是黑种女人!"); } } package ruanjiansheji.shiyan4.woman; public class WhiteWoman implements Woman{ @Override public void makeWoman() { System.out.println("我是白种女人!"); } } package ruanjiansheji.shiyan4.woman; public interface Woman { public void makeWoman(); } package ruanjiansheji.shiyan4.woman; public class YellowWoman implements Woman{ @Override public void makeWoman() { System.out.println("我是黄种女人!"); } } package ruanjiansheji.shiyan4; import ruanjiansheji.shiyan4.man.Man; import ruanjiansheji.shiyan4.utils.AbstractFactory; import ruanjiansheji.shiyan4.utils.YellowFactory; import ruanjiansheji.shiyan4.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(); } }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!