可复用面向对象编程——FACTORY METHOD(工厂方法)

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()方法 

  } 

} 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值