1、没有反射时的工厂模式
设计模式之 工厂模式
** 一般实现类 **
interface fruit{
public abstract void eat();
}
class App implements fruit{
public void eat(){
System.out.println("Apple");
}
}
class Orage implements fruit{
public void eat(){
System.out.println("Orange");
}
}
工厂模式
class Factory{
public static fruit getInstance(String fruitName){
fruit f=null;
if("Apple".equals(fruitName)){
f=new Apple(();
}
if("Orage".equals(fruitName)){
f=new Orange();
}
return f;
}
}
使用
public static main(String[] args){
fruit f=Factory.getInstance("Orage");
f.eat();
}
这样,当我们添加一个子类的时候,就需要修改工厂了。如果我们添加太多的子类,改的就会很多。每增加一个实现子类均需要修改子类和工厂。
2.利用反射机制创建工厂模式
factory
class Factory{
public static fruit getInstance(String CalssName){
fruit f=null;
try{
f=(fruit)Class.forName(ClassName).newInstance();
}catch(Exception e){
e.printStackTrace();
}
return f;
}
}
使用
class hello{
fruit f=Factory.getInstance("Reflect.Apple");
if(f!=null){
f.eat();
}
}
利用反射通过类名来获取类的实例,当实现发生变化时。只要不更新接口,Factory均不需要替换。
网友评论