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