一个农场公司专门负责培育各种水果,在这个系统中的水果有葡萄,草莓和苹果,其类图如图所示。 请按以下要求编写程序:
1. 应用简单工厂方法模式,在主程序中根据键盘输入的水果名称来完成其生长状态的描述。
2 应用工厂方法模式,在主程序中根据键盘输入的水果名称来完成其生长状态的描述
//新建一个简单工厂类 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(); }
时间: 2024-10-30 18:01:52