设计模式之工厂方法模式
来源:互联网 发布:淘宝模板怎么设置 编辑:程序博客网 时间:2024/06/10 07:42
publicabstract classPayMethodFactory
{
public abstractAbstractPaygetPayMethod();
}
②具体工厂类
public classCashPayFactoryextendsPayMethodFactory
{
publicAbstractPaygetPayMethod()
{
return newCashPay();
}
}
PayMethodFactory factory;
AbstractPay payMethod;
factory=newCashPayFactory();
payMethod =factory.getPayMethod();
payMethod.pay();
<?xmlversion="1.0"?>
<config>
<className>CashPayFactory</className>
</config>
Java反射(Java Reflection):
是指在程序运行时获取已知名称的类或已有对象的相关信息的一种机制,包括类的方法、属性、超类等信息,还包括实例的创建和实例类型的判断等。可通过Class类的forName()方法返回与带有给定字符串名的类或接口相关联的Class对象,再通过newInstance()方法创建此对象所表示的类的一个新实例,即通过一个类名字符串得到类的实例
//创建一个字符串类型的对象
Class c =Class.forName(“String”);
Objectobj =c.newInstance();
returnobj;
工具类XMLUtil代码片段:
//创建DOM文档对象
DocumentBuilderFactorydFactory =DocumentBuilderFactory.newInstance();
DocumentBuilderbuilder =dFactory.newDocumentBuilder();
Documentdoc; doc =builder.parse(newFile("config.xml"));
//获取包含类名的文本节点
NodeListnl =doc.getElementsByTagName("className");
NodeclassNode=nl.item(0).getFirstChild();
StringcName=classNode.getNodeValue();
//通过类名生成实例对象并将其返回
Class c=Class.forName(cName);
Objectobj=c.newInstance();
returnobj;
修改后的客户类代码片段:
PayMethodFactoryfactory;AbstractPaypayMethod;
factory=(PayMethodFactory)XMLUtil.getBean(); //getBean()的返回类型为Object,此处需要进行强制类型转换
payMethod =factory.getPayMethod();
payMethod.pay();
实例二:日志记录器
//使用上下文和JNDI得到连接工厂的引用,ctx是上下文Context类型的对象
QueueConnectionFactoryqConnFact=(QueueConnectionFactory)ctx.lookup("cfJndi");
//使用连接工厂创建一个连接
QueueConnectionqConn=qConnFact.createQueueConnection();
//使用连接创建一个会话
QueueSessionqSess=qConn.createQueueSession(false,javax.jms.QueueSession.AUTO_ACKNOWLEDGE);
//使用上下文和JNDI得到消息队列的引用
Queueq=(Queue)ctx.lookup("myQueue");
//使用连接创建一个需要发送的消息类型的实例
QueueSenderqSend=qSess.createSender(q);
System.out.println("开始发送消息......");Connection conn=DriverManager.getConnection("jdbc:microsoft:sqlserver://localhost:1433;DatabaseName=DB;user=sa;password=");
Statement statement=conn.createStatement();
ResultSetrs=statement.executeQuery("select * from UserInfo");
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式 之 工厂方法
- 设计模式 之 工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 设计模式之工厂方法
- 《设计模式》之工厂方法
- 设计模式之--工厂方法
- AppWidget简介
- 全排列和全组合
- Java线程通信练习之“生产者/消费者问题”
- 2013完美世界校招笔试题及答案
- hdoj 1002 A + B Problem II 【大数加法模板】
- 设计模式之工厂方法模式
- 一键转发朋友圈到 APP
- 权限的设计
- CMCC-EDU 模拟登陆中的验证码识别
- time
- hash 表达式树 UVa 12219 Common Subexpression Elimination
- NOI 2007 社交网络 (COGS 15) Floyd求最短路及方案数
- oracle中取出字符串中的数字
- POJ_3280 Cheapest Palindrome(DP)