为了让用户能得到他们想要的东西,用户只用输入他们能够输入东西,而不用输入代码来得到他们想要的东西。
下面写一个简单的例子:
interface Fruit{
public void eart();
}
class Apple implements Fruit{
public void eart(){
System.out.println("吃苹果");
}
}
class Orange implements Fruit{
public void eart(){
System.out.println("吃橘子");
}
}
class Factory{
public static Fruit getInstence(String className){
if("apple".equals(className)){
return new Apple();
}else if("orange".equals(className)){
return new Orange();
}else{
return null;
}
}
}
public class Fpp {
public void eart();
}
class Apple implements Fruit{
public void eart(){
System.out.println("吃苹果");
}
}
class Orange implements Fruit{
public void eart(){
System.out.println("吃橘子");
}
}
class Factory{
public static Fruit getInstence(String className){
if("apple".equals(className)){
return new Apple();
}else if("orange".equals(className)){
return new Orange();
}else{
return null;
}
}
}
public class Fpp {
public static void main(String[] args) {
Fruit f =Factory.getInstence("apple");//用户输入apple
f.eart();
}
Fruit f =Factory.getInstence("apple");//用户输入apple
f.eart();
}
}
从上面的例子可以看出,用户只用输入“apple”就能调用Apple类中的方法,而不需要写出“new Apple();”的语句。现在的客户不会看见具体的子类,因为所有的接口对象都是通过 Factory类取得的,如果日后要扩充子类对象,则只需要修改Factory类即可,但是客户的调用不会发生变化。