Java---设计模块(工厂方法)
发布日期:2021-06-29 13:33:16
浏览次数:2
分类:技术文章
本文共 2299 字,大约阅读时间需要 7 分钟。
★ 场景和问题
Java程序开发讲究面向接口编程,隐藏具体的实现类,可是如何得到接口呢?工厂类的命名规范:***Factory
单例工厂方法的命名规范:getInstance()工厂的本质是“选择实现”
工厂、接口和实现类之间的技术边界:工厂只负责选择实现,实现类才做真正的实现,而接口是限定到底实现什么东西和返回什么东西,三者之间分工明确、各负其责。
下面为简单的工厂方法介绍和源代码:
接口DepApi :package cn.hncu.pattern.factory.dep;//接口public interface DepApi { public String t1();}
实例1 Deplmpl1 :
package cn.hncu.pattern.factory.dep;public class Deplmpl1 implements DepApi{ @Override public String t1() { System.out.println("DepApi--Deplmpl1.t1()..."); return "Deplmpl1_t1()"; } //下面这个方法在外面访问不到,因为被接口隔离了 public String t2() { System.out.println("DepApi--Deplmpl1.t2()..."); return "Deplmpl1_t2()"; }}
实例2 Deplmpl2 :
package cn.hncu.pattern.factory.dep;public class Deplmpl2 implements DepApi{ @Override public String t1() { System.out.println("DepApi--Deplmpl2.t1()..."); return "Deplmpl2_t1()"; } //下面这个方法在外面访问不到,因为被接口隔离了 public String t2() { System.out.println("DepApi--Deplmpl2.t2()..."); return "Deplmpl2_t2()"; }}
工厂类 DepFactory :
package cn.hncu.pattern.factory.dep;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Properties;//工厂真正的作用是:选择实现public class DepFactory { // 工厂方法,命名规范:createDepApi,getDepApi,getDepInstance public static DepApi getDepApi(){ Properties p = new Properties(); int type=1; InputStream inStream; try { inStream = new FileInputStream("a.properties"); p.load(inStream); type = Integer.parseInt(p.getProperty("type")); } catch (IOException e) { e.printStackTrace(); } if(type==1){ return new Deplmpl1(); } if(type==2){ return new Deplmpl2(); } return null; }}
测试 Client :
package cn.hncu.pattern.factory;import cn.hncu.pattern.factory.dep.DepApi;import cn.hncu.pattern.factory.dep.DepFactory;public class Client { public static void main(String[] args) { DepApi da = DepFactory.getDepApi(); da.t1();//修改配置文件a.properties就可达到修改调用方法的目的,而不用修改源代码 //da.t2(); //实现类当中的t2()方法已经被接口封装隔离了,访问不了 }}
a.properties文件里面的内容:
此为配置文件,修改配置文件不叫修改源代码的。type=1
此时的输出结果为;
DepApi--Deplmpl1.t1()...
只修改配置文件:
type=2
此时的输出结果为:
DepApi--Deplmpl2.t1()...
转载地址:https://chenhx.blog.csdn.net/article/details/51052677 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月02日 19时51分39秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Windows创建本地版本库(1)
2021-07-02
基于java的酒店管理系统的设计与实现
2021-07-02
基于WEB的仓库管理系统的设计与实现
2021-07-02
基于java的web聊天系统
2021-07-02
基于java的俄罗斯方块的设计与实现
2021-07-02
基于java的魂斗罗的设计
2021-07-02
基于java的网页内容管理
2021-07-02
基于java的学生管理系统
2021-07-02
基于java网盘搜索的设计与实现
2021-07-02
基于SSM的仿小米商城源码
2021-07-02
基于SSM的医院人事管理系统的设计与实现
2021-07-02
基于SSM的网上购物系统的设计与开发
2021-07-02
基于SSM框架的BS微博系统的设计与实现
2021-07-02
超市订单管理系统
2021-07-02
基于ssm的民宿网站
2021-07-02
基于JavaWeb的物流管理系统的设计与实现
2021-07-02
基于Java的飞机大战游戏的设计与实现论文
2021-07-02
基于java实现的超级马里奥游戏
2021-07-02
keepalived 实现高可用,负载均衡
2021-07-02