【感想】
今天学习了简单工厂模式,说起来简单其实真的简单。
举个例子,在伊利工厂里生产很多种类的食品,有雪糕,有
牛奶。很显然,要是你是一个需求量很大的零售商,你每次
需要很多很多的雪糕和牛奶。你当然不希望,每次都写一大
堆的配方要求,因为工厂已经制定了标准。你只需要要说(
纯牛奶,小布丁)等等名字。他们就给你货。而不要自己去
说我想要一台生产(小布丁)的机器为我生产(小布丁)。
在java里的意思就是。你不必说:
ClassNameA obj1 = new ClassNameA();
ClassNameB obj2 = new ClassNameB();
你只需要这样:
ClassBase obj1 = ClassBase.getInstanece("ClassNameA");
ClassBase obj2 = ClassBase.getINstanece("ClassNameB");
看看一个完整的事例:
interface Car{
public void drive();
}
class Benz implements Car{
public void drive(){
System.out.println("Driving Benz");
}
}
class Bmw implements Car{
public void drive(){
System.out.println("Driving Bmw");
}
}
class Aud implements Car{
public void drive(){
System.out.println("Driving Aud");
}
}
class Driver{
public static Car driverCar(String s) throws Exception{
if(s.equalsIgnoreCase("Benz")){
return new Benz();
}else if(s.equalsIgnoreCase("Bmw")){
return new Bmw();
}else if(s.equalsIgnoreCase("Aud")){
return new Aud();
}else{
//System.out.println("No Car ..");
throw new Exception();
//return null;
}
}
}
public class Test{
public static void main(String [] args){
try{
Car car1 = Driver.driverCar("benz");
car1.drive();
Car car2 = Driver.driverCar("aud");
car2.drive();
Car car3 = Driver.driverCar("bmw");
car3.drive();
}catch(Exception e){
System.out.println("Catch a Exception");
}
}
}
输出结果:
Driving Benz
Driving Aud
Driving Bmw