首页 > 代码库 > 工厂方法模式
工厂方法模式
工厂方法模式适用场景:
在生成各种复杂对象的时候,且这些对象职责不尽相同
工厂方法使用代码:我们举个例子吧,比如我有很多不同的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 <T> * @return 具体的产品对象 */ public abstract <T extends Querry> T getQuerryClass (Class<T> clz); }
然后我们去实现这个抽象工厂让他运作起来
public class ConcreteFactory extends QuerryFactory { @Override public <T extends Querry> T getQuerryClass(Class<T> 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());
......
上面是获取了某一个类的应用,获取其他的类的方法类似
工厂方法模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。