一個農場公司專門負責培育各類水果,在這個系統中的水果有葡萄,草莓和蘋果,其類圖如圖所示。 請按如下要求編寫程序:java
1. 應用簡單工廠方法模式,在主程序中根據鍵盤輸入的水果名稱來完成其生長狀態的描述。app
2 應用工廠方法模式,在主程序中根據鍵盤輸入的水果名稱來完成其生長狀態的描述ide
//新建一個簡單工廠類 SimpleFactory.java public class SimpleFactory{ // 此處須要定義 static 類型,在客戶端 類名。方法調用 public staitc Fruit getFruitObj(String type){ Fruit obj = null; if(type.equals("apple")){ obj = (Fruit) new Apple(); }else if(type.equals("straw")){ obj= (Fruit) new Straw(); }else if(type.equals("grape")){ obj = (Fruit) new Grape(); } return obj; } } //實現水果類 Fruit.java interface Fruit{ void plant(); //定義種植方法 void grow(); //定義生長方法 void harvest(); } // 實現蘋果類 Apple.java //此處草莓和葡萄同理,都實現接口FRUIT public class Apple implements Fruit{ @Override public void plant() { // TODO Auto-generated method stub System.out.print("種植了蘋果"); } @Override public void grow() { // TODO Auto-generated method stub System.out.print("蘋果生長了"); } @Override public void harvest() { // TODO Auto-generated method stub System.out.print("蘋果結果了"); } } //客戶端接口 public class main{ public staic void main(String args[]){ Fruit fu =SimpleFactory.getfruitobj("apple"); fu.plant(); fu.grow(); fu.harvest(); } }
工廠模式實現函數
/實現水果類 Fruit.java interface Fruit{ void plant(); //定義種植方法 void grow(); //定義生長方法 void harvest(); } // 定義一個抽象工廠方法 public abstract class Factory { public abstract Fruit getapple(); public static Factory getFruitFactory(Stri ng type){ Factory f = null; if(type.equals("apple")){ f=new AppleFactory(); f.getapple(); } return f; } //定義一個蘋果的工廠 public class AppleFactory extends Factory{ public Apple getapple(){ //返回蘋果的對象 return new Apple(); } //定義一個蘋果。與上面簡單工廠同 public class Apple implements Fruit{ @Override public void plant() { // TODO Auto-generated method stub System.out.print("123"); } @Override public void grow() { // TODO Auto-generated method stub } @Override public void harvest() { // TODO Auto-generated method stub } } //定義主函數 public class client { public static void main(String[] args) { // TODO Auto-generated method stub //執行 方法 Fruit f =(Fruit) Factory.getFruitFactory("apple"); f.plant(); f.grow(); f.harvest(); }