我是靠谱客的博主 耍酷汽车,最近开发中收集的这篇文章主要介绍工厂方法模式,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

继承简单工厂模式的优点,有弥补了他的缺点

暂时附上代码,以后慢慢完善

1.抽象产品类TV(电视机类)

package com.th.designedmodem;

public interface TV {
	public void play();
}

2.具体产品类HaierTV(海尔电视机类)

package com.th.designedmodem;

public class HaierTV implements TV {

	@Override
	public void play() {
		System.out.println("海尔电视机播放中。。。");
	}
}
3. 具体产品类HisenseTV(海信电视机类)
package com.th.designedmodem;

public class HisenseTV implements TV {

	@Override
	public void play() {
		System.out.println("海信电视机播放中。。。。");
	}
}

4.抽象工厂类TVFactory(电视机工厂类)

package com.th.designedmodem;

public interface TVFactory {
	public TV produceTV();
}


5.具体工厂类HaierTVFactory(海尔电视机工厂类)
package com.th.designedmodem;

public class HaierTVFactory implements TVFactory {

	@Override
	public TV produceTV() {
		System.out.println("海尔电视机工厂生产海尔电视机。。。。");
		return new HaierTV();
	}
}


6.具体工厂类HisenseTVFactory(海信电视机工厂类)
package com.th.designedmodem;

public class HisenseTVFactory implements TVFactory {

	@Override
	public TV produceTV() {
		System.out.println("海信电视机工厂生产海信电视机。。。。");
		return new HisenseTV();
	}
}


7.XMLUtil类
package com.th.designedmodem;

import javax.xml.parsers.*;
import org.w3c.dom.*;
import java.io.*;

public class XMLUtil {
	public static Object getBean()
	{
		try
		{
			DocumentBuilderFactory dFactory = DocumentBuilderFactory.newInstance();
			DocumentBuilder builder = dFactory.newDocumentBuilder();
			Document doc;
			doc = builder.parse(new File("config.xml"));
			
			NodeList nl = doc.getElementsByTagName("className");
			Node classNode = nl.item(0).getFirstChild();
			String cName = classNode.getNodeValue().trim();
			
			Class c = Class.forName(cName);
			Object obj = c.newInstance();
			return obj;
		}
		catch (Exception e)
		{
			e.printStackTrace();
			return null;
		}
	}
}


9.客户端测试类Client
package com.th.designedmodem;

public class Client {

	public static void main(String[] args) {
		try
		{
			TV tv;
			TVFactory factory;
			factory = (TVFactory) XMLUtil.getBean();
			tv = factory.produceTV();
			tv.play();
		}
		catch (Exception e)
		{
			System.out.println(e.getMessage());
			System.out.println("heheda");
		}
	}
}


config.xml文件(放到工程根目录下)
<?xml version="1.0" ?>
<config>
	<className>
		com.th.designedmodem.HaierTVFactory
	</className>
</config>





最后

以上就是耍酷汽车为你收集整理的工厂方法模式的全部内容,希望文章能够帮你解决工厂方法模式所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(38)

评论列表共有 0 条评论

立即
投稿
返回
顶部