发表时间:2010-01-26
最后修改:2010-01-26
1.诠释
定义一个用于创建对象的接口,让子类决定实例化哪一个类。
2.实用范围
• 当一个类不知道它所必须创建的对象的类的时候。
• 当一个类希望由它的子类来指定它所创建的对象的时候。
• 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类
是代理者这一信息局部化的时候。
3.好处
• 工厂方法不再将与特定应用有关的类绑定到你的代码中。
• 客户无论如何必须创建C r e a t o r的子类时,创建子类也是可行的。
• 为子类提供挂钩
• 连接平行的类层次
4.实现
public interface Fruit {
void plant(); //水果是被种植的
void enableEat(); //水果能吃
}
public class Apple implements Fruit{
public void plant(){
System.out.println("种苹果!");
}
public void enableEat(){
System.out.println("苹果好吃!");
}
}
public class Grape implements Fruit{
public void plant(){
System.out.println("种葡萄!");
}
public void enableEat(){
System.out.println("葡萄好吃!");
}
}
public class Pear implements Fruit{
public void plant(){
System.out.println("种鸭梨!");
}
public void enableEat(){
System.out.println("鸭梨好吃!");
}
}
public interface BuyFruit{
public Fruit buyFruit(); //定义买水果这一过程
}
public class BuyApple implements BuyFruit{
public Fruit buyFruit(){
return new Apple(); //返回苹果实例
}
}
public class BuyPear implements BuyFruit{
public Fruit BuyPear (){
return new Pear(); //返回鸭梨实例
}
}
public class BuyGrape implements BuyFruit{
public Fruit BuyGrape (){
return new Grape (); //返回葡萄实例
}
}
public class FruitTest {
public static void main(String args[]){
BuyApple buy = new BuyApple(); //开始买水果这个过程
buy.buyFruit().enableEat(); //调用苹果的enableEat()方法
}
}