工厂方法FactoryMethod
public interface Fruit {
public void plant();
public void grow();
public void harvest();
}
public class Apple implements Fruit {
/**
* 树龄
*/
private int treeAge;
public int getTreeAge() {
return treeAge;
}
public void setTreeAge(int treeAge) {
this.treeAge = treeAge;
}
@Override
public void plant() {
System.out.println("Apple has been planted.");
}
@Override
public void grow() {
System.out.println("Apple is growing...");
}
@Override
public void harvest() {
System.out.println("Apple has been harvested.");
}
}
public class Grape implements Fruit {
/**
* 葡萄籽
*/
private boolean seedless;
public boolean isSeedless() {
return seedless;
}
public void setSeedless(boolean seedless) {
this.seedless = seedless;
}
@Override
public void plant() {
System.out.println("Grape has been planted.");
}
@Override
public void grow() {
System.out.println("Grape is growing...");
}
@Override
public void harvest() {
System.out.println("Grape has been harvested.");
}
}
public class Strawberry implements Fruit {
@Override
public void plant() {
System.out.println("Strawberry has been planted.");
}
@Override
public void grow() {
System.out.println("Strawberry is growing...");
}
@Override
public void harvest() {
System.out.println("Strawberry has been harvested.");
}
}
public interface FruitGardener {
public Fruit factory();
}
public class AppleGardener implements FruitGardener {
@Override
public Fruit factory() {
return new Apple();
}
}
public class GrapeGradener implements FruitGardener {
@Override
public Fruit factory() {
return new Grape();
}
}
public class StrawberryGradener implements FruitGardener {
@Override
public Fruit factory() {
return new Strawberry();
}
}
public class TestFactoryMethod {
public static void main(String[] args) {
FruitGardener appleGardener = new AppleGardener();
Apple apple = (Apple) appleGardener.factory();
apple.plant();
apple.grow();
apple.harvest();
}
}