java设计模式之抽象工厂模式
来源:互联网 发布:骤风软件价格 编辑:程序博客网 时间:2024/04/30 01:23
抽象工厂包含的角色:
1、抽象工厂(AbstractFactory)
2、具体工厂(ConcreteFactory)
3、抽象产品(AbstractProduct)
4、具体产品(Product)
//抽象产品类public interface Television {public void play();}
//具体产品类public class HaierTelevision implements Television {@Overridepublic void play() {System.out.println("海尔电视机播放中。。。。。。");}}
//具体产品类public class TCLTelevision implements Television{@Overridepublic void play() {// TODO Auto-generated method stubSystem.out.println("TCL电视机播放中。。。。。");}}
//抽象产品类public interface AirConditioner {public void changTemperature();}
//具体产品类public class HaierAirConditioner implements AirConditioner{@Overridepublic void changTemperature() {// TODO Auto-generated method stubSystem.out.println("海尔空调温度改变中。。。。。。。。");}}
//具体产品类public class TCLAirConditioner implements AirConditioner{@Overridepublic void changTemperature() {// TODO Auto-generated method stubSystem.out.println("TCL空调温度改变中。。。。。。。");}}
//抽象工厂类(电器工厂类)public interface EFactory {public Television producedTelevision();public AirConditioner producedAirConditioner();}
//具体工厂类(海尔工厂类)public class HaierFactory implements EFactory{@Overridepublic Television producedTelevision() {return new HaierTelevision();}@Overridepublic AirConditioner producedAirConditioner() {return new HaierAirConditioner();}}
//具体工厂类(TCL工厂类)public class TCLFactory implements EFactory{@Overridepublic Television producedTelevision() {// TODO Auto-generated method stubreturn new TCLTelevision();}@Overridepublic AirConditioner producedAirConditioner() {// TODO Auto-generated method stubreturn new TCLAirConditioner();}}
import java.io.File;import javax.xml.parsers.DocumentBuilder;import javax.xml.parsers.DocumentBuilderFactory;import org.w3c.dom.Document;import org.w3c.dom.Node;import org.w3c.dom.NodeList;public class XMLUtil {//XML操作工具类public static Object getBean(){try {//创建文档对象DocumentBuilderFactory dFactory=DocumentBuilderFactory.newInstance();DocumentBuilder dBuilder=dFactory.newDocumentBuilder();Document doc;doc=dBuilder.parse(new File("configTV.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) {// TODO: handle exceptione.printStackTrace();return null;}}}
public class Client {public static void main(String[] args) {try {//抽象工厂类(电器工厂类)EFactory factory;//抽象产品Television tv;AirConditioner ac;//获得具体产品对应的具体工厂类factory =(EFactory)XMLUtil.getBean();tv=factory.producedTelevision();tv.play();ac=factory.producedAirConditioner();ac.changTemperature();} catch (Exception e) {// TODO: handle exception}}}
<?xml version = "1.0"?><config><className>HaierFactory</className></config>
0 0
- java设计模式之抽象工厂模式
- JAVA设计模式之抽象工厂模式
- Java设计模式之抽象工厂模式
- java设计模式之抽象工厂模式
- 【Java设计模式】之抽象工厂模式
- java设计模式 之 抽象工厂模式
- Java--设计模式之抽象工厂模式
- java设计模式之抽象工厂模式
- 设计模式之JAVA----抽象工厂模式
- java设计模式之抽象工厂模式
- java设计模式之抽象工厂模式
- JAVA设计模式之抽象工厂模式
- Java设计模式之抽象工厂模式
- 《Java设计模式》之抽象工厂模式
- Java设计模式之抽象工厂模式
- java设计模式之抽象工厂模式
- JAVA设计模式之抽象工厂模式
- Java设计模式之抽象工厂模式
- c ctrl-c signal
- CSplitterWnd分割窗口的有关问题
- ACMCLUB HDU ACM D题 朋友圈 并查集
- 自己遇到的笔试题目整理
- Ubuntu上使用Hadoop 2.x 六 HDFS cluster搭建
- java设计模式之抽象工厂模式
- 舆情功能点特性
- GitHub 使用01——如何同步更新团队代码
- Win8.1 App 在xaml中实现字体选择器的功能
- NYOJ664 数字整除
- VMWare安装Ubuntu无法开启虚拟机的Unity Mode模式
- 用注册表修改VC6.0字体
- ACMCLUB 问题 B : 二叉树问题
- 2014去哪网春季校园招聘【后台开发实习生】笔试试题