interface Printer{

         public void open();

        

         public void close();

        

         public void print();

}

interface Printer{

         public void open();

        

         public void close();

        

         public void print();

}

class CanonPrinter implements Printer{

         private void clean(){

                   System.out.println("clean")

         }

         public void open(){

                   System.out.println("Canon open");

         }

         public void print(String s);{

                   System.out.println("Canon print--->+s");

         }

         public void close();{

                   this.clean();

                   System.out.println("Canon close");

         }

        

}

class Test{

         public static void main(String args[]){

         //根据用户的选择生成相应打印机的对象,并且向上转型为Printer类型

                   Print printer = null;

                   int flag = 0;//用户输入

                   if(flag == 0){

                            printer = new HPPrinter();

                   }

                   else if(flag == 1){

                            printer = new CanonPrinter();

                   }

                   printer.open();

                   printer.print("test");

                   printer.close();

         }

}

修改后代码:

interface Printer{

         public void open();

        

         public void close();

        

         public void print();

}

class HPPrinter implements Printer{

         public void open(){

                   System.out.println("HP open");

         }

                   public void print(String s);{

                   System.out.println("HP print--->"+s);

         }

         public void close();{

                   System.out.println("HP close");

         }

 

}

class CanonPrinter implements Printer{

         private void clean(){

                   System.out.println("clean")

         }

         public void open(){

                   System.out.println("Canon open");

         }

         public void print(String s);{

                   System.out.println("Canon print--->+s");

         }

         public void close();{

                   this.clean();

                   System.out.println("Canon close");

         }

        

}

class XXXPrinter implements Printer{

         public void open(){

                   System.out.println("XXX open");

         }

                   public void print(String s);{

                   System.out.println("XXX print--->"+s);

         }

         public void close();{

                   System.out.println("XXX close");

         }

 

}class PrinterFactory{

         public Printer getPrinter(int flag){

                   Print  static printer = null;

                   if(flag == 0){

                            printer = new HPPrinter();

                   }

                   else if(flag == 1){

                            printer = new CanonPrinter();

                   }

                   else if(flag == 2){

                            printer = new XXXPrinter();

                   }

                   return printer;

         }

}

class Test{

         public static void main(String args[]){

         //根据用户的选择生成相应打印机的对象,并且向上转型为Printer类型

                   int flag = 0;//用户输入

                   Printer printer = PrinterFactory.getPrinter(flag);

                   printer.open();

                   printer.print("test");

                   printer.close();

         }

}

工厂方法模式

posted on 2012-04-29 22:53  Adonstein  阅读(150)  评论(0编辑  收藏  举报