天天看點

一個電器工廠可以生産多種類型的電器,如海爾工廠可以生産海爾電視機、海爾空調等,TCL工廠可以生産TCL電視機,TCL空調等,相同品牌的電器構成一個産品族,而相同類型的電器構成了一個産品等級結構,現使用

uml類圖

一個電器工廠可以生産多種類型的電器,如海爾工廠可以生産海爾電視機、海爾空調等,TCL工廠可以生産TCL電視機,TCL空調等,相同品牌的電器構成一個産品族,而相同類型的電器構成了一個産品等級結構,現使用
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();

  }

}