博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
工厂方法模式
阅读量:5909 次
发布时间:2019-06-19

本文共 1461 字,大约阅读时间需要 4 分钟。

工厂方法模式适用场景:

  在生成各种复杂对象的时候,且这些对象职责不尽相同

工厂方法使用代码:我们举个例子吧,比如我有很多不同的http查询请求,然后http请求的操作抽象出来其实都是两个操作,一个是先设置http post请求头,然后再发送post请求

所以我们就可以通过工厂类获取http请求具体类型,这样代码逻辑更加清晰,易于修改

首先是Http查询抽象基类

public abstract class Querry {    /**     * 抽像查询方法     */    public abstract void querryMethod(String querryKey);    /**     * 获取查询头     * @return     */    public abstract String getQuerryHeader();}

其次是抽象工厂类

public abstract class QuerryFactory {    /**     * 抽象工厂方法     * 具体生产什么由具体的子类实现     * @param clz 产品对象类型     * @param 
* @return 具体的产品对象 */ public abstract
T getQuerryClass (Class
clz);}

然后我们去实现这个抽象工厂让他运作起来

public class ConcreteFactory extends QuerryFactory {    @Override    public 
T getQuerryClass(Class
clz) { Querry q =null; /** * 通过反射获取类的示例 */ try{ q = (Querry)Class.forName(clz.getName()).newInstance(); }catch (Exception e){ e.printStackTrace(); } return (T) q; }}

这里是通过反射的方式通过获取类的类型然后返回对应的类的类的实例

然后我们就可以具体的去写http请求的类了,比如QuerryA,QuerryB...

然后再使用的地方先实例化工厂方法,然后执行工厂“生产”出来的产品方法即可

//实例化一个工厂方法QuerryFactory factory = new ConcreteFactory();//获取查询实例类Querry querryGasNum=factory.getQuerryClass(HttpQuerxxx.class);querryGasNum.querryMethod(etQuerryInfo.getText().toString(),getActivity()); ......

上面是获取了某一个类的应用,获取其他的类的方法类似

 

转载于:https://www.cnblogs.com/fengfenghuifei/p/6170991.html

你可能感兴趣的文章
Python 基础起步 (四) 变量是什么东西 ?
查看>>
技术分享:阿里巴巴Dubbo实现的源码分析
查看>>
TiDB 助力东南亚领先电商 Shopee 业务升级
查看>>
神级命令awk之30分钟速成必看
查看>>
聊聊flink的FsCheckpointStreamFactory
查看>>
【进阶1-4期】JavaScript深入之带你走进内存机制
查看>>
[LeetCode] 270. Closest Binary Search Tree Value
查看>>
表格的增删改demo
查看>>
7.JS之深浅拷贝
查看>>
Swoole 源码分析——Server模块之TaskWorker事件循环
查看>>
Slog63_项目上线之ArthurSlog个人网站上线2
查看>>
bat批处理简介:Windows自动化之道
查看>>
Python之路--python基础2
查看>>
帆软入门与报表设计
查看>>
【Golang 基础】Go 语言简介
查看>>
数组循环删除的问题
查看>>
聊聊openmessaging的MessagingAccessPoint
查看>>
周锦民:腾讯在线教育视频互动直播间技术实践
查看>>
iOS 视频播放器-模块化您的控制层
查看>>
Java 10 实战第 1 篇:局部变量类型推断
查看>>