2023/10/9 每日总结
实验4:抽象工厂模式
本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:
1、理解抽象工厂模式的动机,掌握该模式的结构;
2、能够利用抽象工厂模式解决实际问题。
[实验任务一]:人与肤色
类图

源代码
package org.test4;
public abstract class AbstractHumanFactory {
public abstract Man produceMan();
public abstract Woman produceWomen();
}
package org.test4;
public class BlackFactory extends AbstractHumanFactory{
@Override
public Man produceMan() {
return new BlackMan();
}
@Override
public Woman produceWomen() {
return new BlackWoman();
}
}
package org.test4;
public class BlackMan extends Man{
@Override
public void show() {
System.out.println("黑色男人");
}
}
package org.test4;
public class BlackWoman extends Woman{
@Override
public void show() {
System.out.println("黑色女人");
}
}
package org.test4;
public class Client {
public static void main(String[] args) {
try
{
AbstractHumanFactory factory=new BlackFactory();
Man man = factory.produceMan();
Woman woman = factory.produceWomen();
man.show();
woman.show();
}
catch(Exception e)
{
System.out.println(e.getMessage());
}
}
}
package org.test4;
public abstract class Man {
public abstract void show();
}
package org.test4;
public class WhiteFactory extends AbstractHumanFactory{
@Override
public Man produceMan() {
return new WhiteMan();
}
@Override
public Woman produceWomen() {
return new WhiteWoman();
}
}
package org.test4;
public class WhiteMan extends Man{
@Override
public void show() {
System.out.println("白色男人");
}
}
package org.test4;
public class WhiteWoman extends Woman{
@Override
public void show() {
System.out.println("白色女人");
}
}
package org.test4;
public abstract class Woman {
public abstract void show();
}
package org.test4;
public class YellowFactory extends AbstractHumanFactory{
@Override
public Man produceMan() {
return new YellowMan();
}
@Override
public Woman produceWomen() {
return new YellowWoman();
}
}
package org.test4;
public class YellowMan extends Man{
@Override
public void show() {
System.out.println("黄色男人");
}
}
package org.test4;
public class YellowWoman extends Woman{
@Override
public void show() {
System.out.println("黄色女人");
}
}

浙公网安备 33010602011771号