博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA设计模式之【工厂方法模式】
阅读量:6140 次
发布时间:2019-06-21

本文共 2156 字,大约阅读时间需要 7 分钟。

422101-20160925214305538-992199557.png

看例子

1.TV产品接口,负责播放

public interface TV // TV接口{    public void play();}

2.TV工厂接口,负责生产产品

public interface TVFactory // TV接口工厂{    public TV produceTV();}

3.TV具体产品类,海尔,海信

public class HaierTV implements TV{    public void play()    {        System.out.println("海尔电视机播放中......");    }}
public class HisenseTV implements TV{    public void play()    {        System.out.println("海信电视机播放中......");    }   }

4.TV具体工厂类

public class HaierTVFactory implements TVFactory{    public TV produceTV()    {        System.out.println("海尔电视机工厂生产海尔电视机。");        return new HaierTV();    }}
public class HisenseTVFactory implements TVFactory{    public TV produceTV()    {        System.out.println("海信电视机工厂生产海信电视机。");        return new HisenseTV();    }}

5.配置config.xml

HisenseTVFactory

6.读取配置文件类

import javax.xml.parsers.*; // 引入xmlimport org.w3c.dom.*;  // 引入dom支持import org.xml.sax.SAXException;import java.io.*; // 引入io支持public class XMLUtil {    //该方法用于从XML配置文件中提取具体类类名,并返回一个实例对象    public static Object getBean() {        try {            //创建文档对象            DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();            DocumentBuilder builder = dFactory.newDocumentBuilder();            Document doc;            doc = builder.parse(new File("./src/config.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;        }    }}

6.客户端

public class Client{    public static void main(String args[])    {         try         {            TV tv; // 定义tv对象            TVFactory factory; // 定义工厂            factory=(TVFactory)XMLUtil.getBean(); // 强制转化,魔术处理            tv=factory.produceTV(); // 创建电视对象            tv.play(); // 播放电视         }         catch(Exception e)         {            System.out.println(e.getMessage());         }    }}

目录结构如下

422101-20160925215123980-482402585.png

转载地址:http://dbuya.baihongyu.com/

你可能感兴趣的文章
备忘——php中页面延时跳转
查看>>
ntp配置
查看>>
2015-08-18
查看>>
hadoop伪分布式搭建
查看>>
EL表达式函数的简单学习
查看>>
ASP.NET MVC 3.0小知识积累
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
Sql Server系列:通用表表达式CTE
查看>>
添加Linux系统Swap空间
查看>>
mysqlsla来分析MYSQL的性能及索引
查看>>
shell脚本实现系统监视统计与数据备份
查看>>
我的友情链接
查看>>
Hadoop核心架构HDFS+MapReduce+Hbase+Hive内部机理详解
查看>>
shell之awk 记录
查看>>
struts2文件上传(2)
查看>>
虽然我每天都进步的很小很小,但我从未停下, -----写给自己
查看>>
vim 7.4.160-1.el7版本存在编辑文件卡顿问题
查看>>
2013敏捷之旅成都图文报道
查看>>
挨踢项目求生法则——实施篇,避免”一失足成千古恨“!
查看>>