工厂模式
一、简单工厂模式
例:一个水果工厂(Factory)提供苹果(Apple)和草莓(Strawberry),订单可选择水果类(Fruit),即工厂提供苹果还是草莓。代码如下:
工厂
public class Factory {
Fruit createFruit(String fruitType){
if(fruitType.equals("strawberry")){
return new Strawberry();
}else if(fruitType.equals("apple")){
return new Apple();
}
return null;
}
}
水果类
public class Fruit {
}
苹果
public class Apple extends Fruit {
Apple(){
System.out.println("apples!!!");
}
}
草莓
public class Strawberry extends Fruit {
Strawberry(){
System.out.println("strawberries!!!");
}
}
订单
可选择工厂提供苹果或草莓
public class OrderParent {
public static void main(String[] args) {
Factory factory = new Factory();
Fruit fruit = factory.createFruit("strawberry");
}
}
二、工厂方法模式
上面简单工厂模式,是一个工厂提供苹果或草莓,但如果有两个不同的工厂,分别是中国工厂和泰国工厂生产苹果和草莓,如果在原有工厂上修改如下:
public class Factory {
Fruit createFruit(String country,String fruitType){
if(country.equals("china")) {
System.out.print("中国工厂提供:");
if(fruitType.equals("strawberry")){
return new Strawberry();
}else if(fruitType.equals("apple")){
return new Apple();
}
}else if(country.equals("thailand"