JAVA设计模式之【工厂方法模式】

简介:

看例子
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

<?xml version="1.0"?>
<config>
    <className>HisenseTVFactory</className>
</config>

6.读取配置文件类

import javax.xml.parsers.*; // 引入xml

import 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());
         }
    }
}

目录结构如下



本文转自TBHacker博客园博客,原文链接:http://www.cnblogs.com/jiqing9006/p/5907130.html,如需转载请自行联系原作者

相关文章
|
8月前
|
设计模式 Java
Java设计模式【三】:抽象工厂模式
Java设计模式【三】:抽象工厂模式
48 0
|
4月前
|
设计模式 Java
Java设计模式-抽象工厂模式(5)
Java设计模式-抽象工厂模式(5)
|
4月前
|
设计模式 Java
Java设计模式-工厂方法模式(4)
Java设计模式-工厂方法模式(4)
|
设计模式 Java
Java设计模式-工厂模式(2)工厂方法模式
Java设计模式-工厂模式(2)工厂方法模式
207 0
Java设计模式-工厂模式(2)工厂方法模式
|
设计模式 Java
【Java设计模式】② 简单工厂模式
工厂模式分为**简单工厂模式**,**工厂方法模式**和**抽象工厂模式**,它们都属于设计模式中的创建型模式。其主要功能都是帮助我们把对象的实例化部分抽取了出来,目的是降低系统中代码耦合度,并且增强系统的扩展性。
139 0
【Java设计模式】② 简单工厂模式
|
设计模式 Java
Java设计模式-工厂模式(3)抽象工厂模式
Java设计模式-工厂模式(3)抽象工厂模式
176 0
Java设计模式-工厂模式(3)抽象工厂模式
|
设计模式 Oracle Java
【玩转23种Java设计模式】创建型模式篇:工厂方法模式
工厂方法模式,是⼀种创建型设计模式。定义一个用于创建产品的接口,由子类决定生产什么产品。
【玩转23种Java设计模式】创建型模式篇:工厂方法模式
|
设计模式 Java
【玩转23种Java设计模式】创建型模式篇:抽象工厂模式
抽象工厂模式提供一个创建产品族的接口,其每个子类可以生产一系列相关的产品。
【玩转23种Java设计模式】创建型模式篇:抽象工厂模式
|
设计模式 Java
【每天一个java设计模式(二)】 - 抽象工厂模式
【每天一个java设计模式(二)】 - 抽象工厂模式
109 0
【每天一个java设计模式(二)】 - 抽象工厂模式
|
设计模式 Java Android开发
Java设计模式——工厂模式与抽象工厂模式
Java设计模式——工厂模式与抽象工厂模式
124 0
Java设计模式——工厂模式与抽象工厂模式

热门文章

最新文章