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();
}
}
工厂方法模式