概述
定义:
工厂方法模式又称为工厂模式,属于类创建型模式。在工厂方法模式中,工厂父类负责定义创建产品对象的公共接口,而工厂子类则负责生成具体的产品对象,这样做的目的是将产品的实例化操作延迟到工厂子类中完成,即通过工厂子类来确定究竟应该实例化哪一个具体产品类。
优点:
缺点:
适用环境:
UML图
实例项目目录结构:
具体代码:
Client.java
package factory;
public class Client {
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
TV tv;
TVFactory factory;
factory=(TVFactory)XMLUtilTVFactory.getBean();
tv=factory.produceTV();
tv.play();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
TV.java
package factory;
public interface TV {
public void play();
}
HaierTV.java
package factory;
public class HaierTV implements TV {
@Override
public void play() {
// TODO Auto-generated method stub
System.out.println("海尔电视播放中...");
}
}
HisenseTV.java
package factory;
public class HisenseTV implements TV {
@Override
public void play() {
// TODO Auto-generated method stub
System.out.println("海信电视播放中...");
}
}
TVFactory.java
package factory;
public interface TVFactory {
public TV produceTV();
}
HaierTVFactory.java
package factory;
public class HaierTVFactory implements TVFactory{
public TV produceTV() {
System.out.println("海尔工厂生产海尔电视...");
return new HaierTV();
}
}
HisenseTVFactory.java
package factory;
public class HisenseTVFactory implements TVFactory {
public TV produceTV() {
System.out.println("海信工厂生产海信电视...");
return new HaierTV();
}
}
XMLUtilTVFactory..java
package factory;
import java.io.*;
import javax.xml.parsers.*;
import org.xml.sax.SAXException;
import org.w3c.dom.*;
public class XMLUtilTVFactory {
public static Object getBean() {
try {
//创建文档对象
DocumentBuilderFactory dFactory=DocumentBuilderFactory.newInstance();
DocumentBuilder builder =dFactory.newDocumentBuilder();
Document doc;
doc=builder.parse(new File("factoryConfigTV.xml"));
//获取文本节点
NodeList nl=doc.getElementsByTagName("className");
Node classNode=nl.item(0).getFirstChild();
String cName=classNode.getNodeValue();
Class c=Class.forName(cName);
Object obj=c.newInstance();
return obj;
}
catch(Exception e) {
e.printStackTrace();
return null;
}
}
}
factoryConfigTV.xml
<?xml version="1.0" encoding="UTF-8"?>
<config>
<className>factory.HaierTVFactory</className>
</config>
运行结果
最后
以上就是感性板凳为你收集整理的(1)GoF设计模式之工厂方法模式及其实例的全部内容,希望文章能够帮你解决(1)GoF设计模式之工厂方法模式及其实例所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复