zoukankan      html  css  js  c++  java
  • 建造者模式

    模式UML

     

    【模式代码(JAVA语言实现)】

    //服务员

     

    //食物套餐

     

    //生产套餐抽象类

     

    //套餐A

     

    //套餐B

     

    //客户端

    public class Client
    {
    public static void main(String args[])
    {
    //动态确定套餐种类
    MealBuilder mb=(MealBuilder)XMLUtil.getBean();
    //服务员是指挥者
    KFCWaiter waiter=new KFCWaiter();
    //服务员准备套餐
    waiter.setMealBuilder(mb);
    //客户获得套餐
    Meal meal=waiter.construct();

    System.out.println("套餐组成:");
    System.out.println(meal.getFood());
    System.out.println(meal.getDrink());
    }
    }

     //提取配置文件

    import javax.xml.parsers.*;
    import org.w3c.dom.*;
    import org.xml.sax.SAXException;
    import java.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("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;
    }
    }
    }

    //配置文件config

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

  • 相关阅读:
    vue(5)联动+tab页
    vue(4)hello world
    vue(3)IDE
    vue(2)创建项目
    vue(1)安装
    线程池(6)简单创建线程3种实现
    logback日志简记
    [省选前集训2021] 模拟赛2
    无标号无根树计数
    [省选前集训2021] 模拟赛1
  • 原文地址:https://www.cnblogs.com/ljs-666/p/8678248.html
Copyright © 2011-2022 走看看