設計模式二—工廠方法模式 一、工廠方法模式優點 良好的封裝性 優秀的可擴展性 屏蔽產品類 典型的解耦架構 二、實例 三、實例代碼 1、Fruit.java public interface Fruit { /* * 生長 * 收穫 * 栽種 */ public void grow(); public ...
設計模式二—工廠方法模式
一、工廠方法模式優點
良好的封裝性
優秀的可擴展性
屏蔽產品類
典型的解耦架構
二、實例
三、實例代碼
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();
}
}
四、實例結果
栽種蘋果
蘋果正在生長,,,
收穫蘋果
栽種蘋果
蘋果正在生長,,,
收穫蘋果