factory工厂设计模式,目的在于方便系统扩展。
这是设计模式里面最容易理解的模式之一。工厂就是可以生产东西的地方,然而一个工厂也是限定生产成品的,例如生产鞋子和袜子的工厂,你只能定鞋子和袜子的货。for example,在我的一个项目里面,有这样的功能,就是多格式文件处理,并获取一定信息,由于各种格式的文件的格式不同,所以读取方式不同,就要对应的类进行读取。我是这样处理的,根据传进来的文件名,判断其文件的后缀,然后在工厂类中获取一个对应的读取类的实例。
我的代码大概架构如下:
public interface Document {
public String readDocument(String path);
}
public class HTMLDocument implements Document{
public HTMLDocument() {
}
pbblic String readDocument(String path){/*......*/}
}
public class Factory{
public static Document document(String type){
if(type=="html")
return new HTMLDocument();
}
}
public class ReadDoucment{
public void readDoucment(String path){
String type;
/*读取后缀......*/
Document doc = Factory.document(type);
String str = doc.readDocument(path);
}
}
如果不这样做的话,代码如下:
public class ReadDocument{
public void readDoucment(String path){
String type;
/*读取后缀......*/
if("html".equlas(type)){/*.....*/}
}
}
也许有人认为,第二种方法的代码不是少很多吗,比较省事,但是你有没想过,但随着你的系统的扩展,ReadDocument类的readDocument()函数会变得相当的臃肿,一大堆的代码都堆在一起,难以调试维护和扩展。当你要扩展系统读取pdf格式文件的话,只要创建PdfDocument类,并implements接口Document就行了,不需要再管ReadDocument类里面的代码。