一个电器工厂可以生产多种类型的电器,如海尔工厂可以生产海尔电视机、海尔空调等,TCL工厂可以生产TCL电视机,TCL空调等,相同品牌的电器构成一个产品族,而相同类型的电器构成了一个产品等级结构,现使用
一个电器工厂可以生产多种类型的电器,如海尔工厂可以生产海尔电视机、海尔空调等,TCL工厂可以生产TCL电视机,TCL空调等,相同品牌的电器构成一个产品族,而相同类型的电器构成了一个产品等级结构,现使用抽象工厂模拟该场景。要求使用相关的工具绘制UML类图并严格按照类图的设计编写程序实现。
uml类图
源码:
package 抽象工厂实现电子器件;
public interface DianQiFactory {
public Kongtiao createkongtiao();//抽象工厂
public Tv createtv();
}
package 抽象工厂实现电子器件;
public interface Kongtiao { //空调的抽象产品
public void display();
}
package 抽象工厂实现电子器件;
public interface Tv {//电视的抽象产品
public void display();
}
package 抽象工厂实现电子器件;
public class HairerFactory implements DianQiFactory {
public Kongtiao createkongtiao() { //海尔工厂生产海尔空调
return new Hairer_Kong_Tiao();
}
public Tv createtv() { //海尔工厂生产海尔电视节
return new Hairer_Tv();
}
}
package 抽象工厂实现电子器件;
public class TvFactory implements DianQiFactory {
@Override
public Kongtiao createkongtiao() {
// TODO 自动生成的方法存根
return new Tcl_Kong_tiao();
}
@Override
public Tv createtv() {
// TODO 自动生成的方法存根
return new Tcl_Tv();
}
}
package 抽象工厂实现电子器件;
public class Hairer_Kong_Tiao implements Kongtiao {
@Override
public void display() {
// TODO 自动生成的方法存根
System.out.println("海尔空调");
}
}
package 抽象工厂实现电子器件;
public class Hairer_Tv implements Tv {
@Override
public void display() {
// TODO 自动生成的方法存根
System.out.println("海尔电视机");
}
}
package 抽象工厂实现电子器件;
public class Tcl_Kong_tiao implements Kongtiao {
@Override
public void display() {
// TODO 自动生成的方法存根
System.out.println("TCL空调");
}
}
package 抽象工厂实现电子器件;
public class Tcl_Tv implements Tv {
public void display() {
// TODO 自动生成的方法存根
System.out.println("TCL电视机");
}
}
package 抽象工厂实现电子器件;
public class Client {
public static void main(String[] args) {
// TODO 自动生成的方法存根
DianQiFactory factory1, factory2; // 两个抽象工厂
Kongtiao k1, k2; // 空调两个抽象产品
Tv tv1, tv2; // 电视机两个抽象产品
factory1 = new HairerFactory(); // factory1 为具体海尔工厂
k1 = factory1.createkongtiao();
tv1 = factory1.createtv();
k1.display();
tv1.display();
factory2 = new TvFactory();// factory2位具体的TCL工厂
k2 = factory2.createkongtiao();// 工厂创建空调
tv2 = factory2.createtv();// 工厂创建电视机
k2.display();
tv2.display();
}
}