当前位置: > 财经>正文

模板方法模式实例与解析

2023-07-15 07:30:31 互联网 未知 财经

模板方法模式实例与解析

在银行办理业务时,一般都包含几个基本步骤,首先需要取号排队,然后办理具体业务,最后需要对银行工作人员进行评分。无论具体业务是取款、存款还是转账,其基本流程都一样。现使用模板方法模式模拟银行业务办理流程。

 

public abstract class BankTemplateMethod{ public void takeNumber(){System.out.println("取号排队。");}public abstract void transact();public void evaluate(){System.out.println("反馈评分。");} public void process() { this.takeNumber(); this.transact(); this.evaluate(); }}

public class Client{public static void main(String a[]){BankTemplateMethod bank;bank=(BankTemplateMethod)XMLUtil.getBean();bank.process();System.out.println("---------------------------------------");}}

配置文件config.xml文件: Transfer

public class Deposit extends BankTemplateMethod{public void transact(){System.out.println("存款");}}

public class Transfer extends BankTemplateMethod{public void transact(){System.out.println("转账");}}

public class Withdraw extends BankTemplateMethod{public void transact(){System.out.println("取款");}}

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; }}}

版权声明: 本站仅提供信息存储空间服务,旨在传递更多信息,不拥有所有权,不承担相关法律责任,不代表本网赞同其观点和对其真实性负责。如因作品内容、版权和其它问题需要同本网联系的,请发送邮件至 举报,一经查实,本站将立刻删除。