一个电器工厂可以产生多种类型的电器,如海尔工厂可以生产海尔电视机、海尔空调等,TCL工厂可以生产TCL电视机、TCL空调等,相同品牌的电器构成一个产品族,而相同类型的电器构成一个产品等级结构,使用抽象工厂模式模拟该场景,要求绘制相应的类图并用Java语言模拟实现。
20软2
第一步,定义一个抽象类EFactory(抽象工厂角色)
public abstract class EFactory
{
public Television produceTelevision()
{return null;}
public Air produceAir()
{return null;}
}
第二步,定义EFactory的具体实现类(具体工厂角色)
具体工厂角色HaierFactory:
public class HaierFactory extends EFactory
{
public Television produceTelevision()
{
Television tel=new HaierTelevision();
return tel;
}
public Air produceAir()
{
Air air=new HaierAir();
return air;
}
}
具体工厂角色TCLFactory:
public class TCLFactory extends EFactory
{
public Television produceTelevision()
{
Television tel=new TCLTelevision();
return tel;
}
public Air produceAir()
{
Air air=new TCLAir();
return air;
}
}
第三步,定义一个抽象类Television(抽象产品角色)
public abstract class Television
{
public void play() {}
}
第四步,定义Television的具体实现类(具体产品角色)
具体产品角色HaierTelevision:
public class HaierTelevision extends Television
{
public void play()
{
System.out.println("我是一台海尔电视机");
}
}
具体产品角色TCLTelevision:
public class TCLTelevision extends Television
{
public void play()
{
System.out.println("我是一台TCL电视机");
}
}
第五步,定义一个抽象类Air(抽象产品角色)
public abstract class Air
{
public void changeTemp() {}
}
第六步,定义Air的具体实现类(具体产品角色)
具体产品角色HaierAir:
public class HaierAir extends Air
{
public void changeTemp()
{
System.out.println("我是一台海尔空调");
}
}
具体产品角色TCLAir:
public class TCLAir extends Air
{
public void changeTemp()
{
System.out.println("我是一台TCL空调");
}
}
第七步,定义一个测试类Client
import java.util.Scanner;
public class Client {
public static EFactory Haierfac,TCLfac;
public static Air Haierair,TCLair;
public static Television Haiertelevision,TCLtelevision;
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc =new Scanner(System.in);
Haierfac = new HaierFactory();
TCLfac = new TCLFactory();
Haierair = Haierfac.produceAir();
Haiertelevision = Haierfac.produceTelevision();
TCLair = TCLfac.produceAir();
TCLtelevision = TCLfac.produceTelevision();
while(true)
{
System.out.println("请输入您的选择:"+"\n"
+ "输入”1“:生产海尔空调"+"\n"
+ "输入”2“:生产TCL空调"+"\n"
+ "输入”3“:生产海尔电视机"+"\n"
+ "输入”4“:生产TCL电视机");
int i=sc.nextInt();
if(i==1){
Haierair.changeTemp() ;
}
else if(i==2){
TCLair.changeTemp();
}
else if(i==3){
Haiertelevision.play();
}
else if(i==4){
TCLtelevision.play();
}
else {
System.out.println("您的输入有误,请按照提示输入!");
}
}
}
}