工厂模式的特点就是隐藏了创建示例的细节
打个比方 User teacher student, 老师和学生都是用户的之类
UserFactory.creator("teacher") UserFactory.creator("student")
通过这样的形式,你能隐藏真正创建的细节
而且替换原来的逻辑也变得统一
这个也不是三言两语能讲清楚的
胡乱说说
模式是要在大量的实践中,通过重构来理解的
程序开发本身是个实践性很强的领域
顾名思义,工厂模式就相当于一个工厂,比方说你需要一辆汽车,你可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的。下边是一个从网上找到的例子:
public class Father {
protected static String one;
}
class Son1 extends Father{
public Son1(){
one="son1";
}
}
class Son2 extends Father{
public Son2(){
one="son2";
}
}
class Factory{
public Father getSon(String s){
if(s.equals("1")){
return new Son1();
}
else{
return new Son2();
}
}
//main
public static void main(String [] args){
Factory factory=new Factory();
Father father=factory.getSon("2");
//print
System.out.println(father.one);
}
}
上边的例子是获得一个son对象此时我不用去管Father和son的具体实现细节,我只用从Factory获取一个就行了。如果不采用工厂模式的话,那么你如果要获得一个son1就要这样,Father son=new son1();这就要求我们必须熟悉son1类的结构,如果是两个不同的人写的类要进行交互的话,那么这样就有些困难了,所以引入了工厂模式。
一楼的说差不多就是,实际上就是隐藏了实现的细节,用户不用关心对象是怎么创建出来的。
你说工厂模式,我理解你是再说简单工厂模式。抽象程度从低到高依次是:简单工厂(simple factory),工厂方法(factory method),抽象工厂(abstract factory)。
这些还是需要在实际中应用,例如在做项目的时候做设计的时候用到。否则只是枯燥的学,很难理解,即使理解了也记不长久。
我按照设计模式一书写过简单的例子,如果需要可以发给你一份。是用myeclipse的,要是不会用myeclipse的话,发了也没用估计。