微信扫一扫打赏支持

设计模式二—工厂方法模式

设计模式二—工厂方法模式

一、工厂方法模式优点

良好的封装性

优秀的可扩展性

屏蔽产品类

典型的解耦架构

 

二、实例

 

三、实例代码

1、Fruit.java

public interface Fruit {

   /*

    * 生长

    * 收获

    * 栽种

    */

   public void grow();

   public void harvest();

   public void plant();

}

 

2、FruitGardener.java

public interface FruitGardener {

   /*

    * 水果园丁

    * 建立水果工厂的方法

    */

  

   public Fruit factory();

  

  

}

3、Apple.java

public class Apple implements Fruit {

 

   private int treeAge;

  

   public void grow() {

     System.out.println("苹果正在生长,,,");

   }

 

  

   public void harvest() {

     System.out.println("收获苹果");

   }

 

  

   public void plant() {

     System.out.println("栽种苹果");

   }

 

 

   public int getTreeAge() {

     return treeAge;

   }

 

 

   public void setTreeAge(int treeAge) {

     this.treeAge = treeAge;

   }

  

  

 

}

4、Grape.java

public class Grape implements Fruit {

   private boolean seedless;

  

   public void grow() {

     System.out.println("葡萄正在生长。。。");

   }

 

   public void harvest() {

     System.out.println("收获葡萄。");

   }

 

   public void plant() {

     System.out.println("栽种葡萄。");

   }

 

   public boolean isSeedless() {

     return seedless;

   }

 

   public void setSeedless(boolean seedless) {

     this.seedless = seedless;

   }

  

  

 

}

5、AppleGardener.java

public class AppleGardener implements FruitGardener {

 

   public Fruit factory() {

     return new Apple();

   }

 

}

 

 

6、GrapeGardener.java

public class GrapeGardener implements FruitGardener {

 

   public Fruit factory() {

     return new Grape();

   }

 

}

 

7、ClientDemo.java

public class ClientDemo {

 

   public static void main(String[] args) {

     //苹果园丁工厂

     FruitGardener fruitGardener=new AppleGardener();

     //通过工厂生产苹果

     Fruit apple = fruitGardener.factory();//用接口代替了实现实例

     apple.plant();

     apple.grow();

     apple.harvest();

 

     //葡萄园丁工厂

     fruitGardener=new AppleGardener();

     //通过工厂生产葡萄

     Fruit grape = fruitGardener.factory();//用接口代替了实现实例

     grape.plant();

     grape.grow();

     grape.harvest();

 

   }

 

}

 

 

四、实例结果

栽种苹果

苹果正在生长,,,

收获苹果

栽种苹果

苹果正在生长,,,

收获苹果

 

posted @ 2017-05-23 08:42  范仁义  阅读(357)  评论(0编辑  收藏  举报