代码随练
今天在看java编程思想第10章中的匿名内部类的时候,学到一种自己认为还不错的工厂方法来实现工厂模式,今天贴于此处,以便自己以后使用。
用法:当需要一个单一的工厂对象时,可以利用匿名内部类这种思想去实现。
interface InterfaceClass {//定义一个接口
void method();//定义方法1
void method2();//定义方法2
}
interface InterfaceClassFactory {//定义一个工厂的接口
InterfaceClass getInterfaceClass();
}
class implInterfaceClass implements InterfaceClass {//接口的实现类1
private implInterfaceClass() {
}
@Override
public void method() {
System.out.println("☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆");//实现接口中的方法1
}
@Override
public void method2() {
System.out.println("△△△△△△△△△△△△△△△△△△△△△△△△△");//实现接口中的方法2
}
//思想的关键在这里,这里利用一个静态的方法来实例化工厂类接口的匿名内部类。该匿名内部类实现了接口中的方法,返回一个接口的实现类的引用。
public static InterfaceClassFactory factory= new InterfaceClassFactory(){//定义一个静态的变量,这个表里中返回当工厂类
@Override
public InterfaceClass getInterfaceClass() {
return new implInterfaceClass();
}
};
}
class implInterfaceClass2 implements InterfaceClass{
private implInterfaceClass2() {
}
@Override
public void method() {
System.out.println("❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ❤ ");
}
@Override
public void method2() {
System.out.println("√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√√");
}
public static InterfaceClassFactory factory2=new InterfaceClassFactory() {
@Override
public InterfaceClass getInterfaceClass() {
return new implInterfaceClass2();
}
};
}
public class MyFactory {
public static void main(String[] args){
implInterfaceClass.factory.getInterfaceClass().method();
implInterfaceClass2.factory2.getInterfaceClass().method2();
}
}
运行结果