考虑用静态工厂方法代替构造器
来源:互联网 发布:java 计算两个时间戳 编辑:程序博客网 时间:2024/06/05 05:52
- 方法有名字,可以知道构建的是什么样的一个对象;
- 不必在每次调用的时候都创建一个新的对象,可以使用预先缓存好的对象,避免创建重复的对象–这样做的好处就是可以提升性能;
- 可以有选择的返回子类型的对象。
- 在静态工厂方法中使用范型可以使代码简洁,如下:
public static <K,V> HashMap<K,V> newInstance(){ return new HashMap<K,V>();}//using it,very simpleHashMap<String,List<String>> m = HashMap.newInstance();
服务提供者框架(service provider framework)
组成:
- 服务接口(service interface),提供者实现它,用来提供服务
- 提供者注册API(provider registration API)
- 服务访问者API(Service access API)
- 服务提供者接口(service provider Interface),这个是可选的,用来创建服务实现的实例,这块比较难懂,一会看代码。
以上的1,2,3看着像不像SOA?我感觉挺像的,其实SOA也好,RMI也好,都是一个思想。只不过是在运维过程中,需要加入不同的元素,使其可以更好的支撑业务。所以了解,J2EE中的基础结构,对于以后java工程中的各种模式,具有参考价值。
对于JDBC来讲:
- Connection就是服务接口(service interface)
- DriverManager.registerDriver是提供者注册API
- DriverManager.getConnection是服务访问API
Driver就是服务提供者接口,负责创建connection实现的实例
看下面的代码:
//Service provider framework sketch//服务接口public interface Service(){ ...//这里是具体的服务提供方法}//服务提供者接口public interface Provider{ Service newService();}//不可实例化的类,用于服务注册和访问public class Services { private Services{};//阻止实例化 //映射服务名字到具体的服务 private static final Map<String,Provider> providers = new ConcurrentHashMap<String, Provider>(); public static final String DEFAULT_PROVIDER_NAME = "<def>"; //服务提供者注册API //默认的注册方法 public static void registerDefaultProvider(Provider p){ registerProvider(DEFAULT_PROVIDER_NAME,p); } //真正的注册方法 public void registerProvider(String name, Provider p) { providers.put(name, p); } //服务访问API public static Service newInstance() { return newInstance(DEFAULT_PROVIDER_NAME); } //真正的实例化方法 public static Service newInstance(String name) { Provider p = providers.get(name); if(p == null) { throw new IllegalArgumentException("No provider registered with name:" + name); } return p.newService();//真正的调用服务的接口方法 }}
通过以上的代码可以看出来,编写了接口的框架,不需要具体的实现类,可以完成程序主架构的代码编写,这样的代码逻辑结构清析。
以上代码的核心就是如何创建Service,以使用service中提供的服务方法。
0 0
- 01、考虑用静态工厂方法代替构造器
- 考虑用静态工厂方法代替构造器
- [Effective Java]考虑用静态工厂方法代替构造器
- 第一条:考虑用静态工厂方法代替构造器
- 考虑用静态工厂方法代替构造器
- 《Effective Java》-考虑用静态工厂方法代替构造器
- 第一条:考虑用静态工厂方法代替构造器
- 考虑用静态工厂方法代替构造器
- EffectiveJava-考虑用静态工厂方法代替构造器
- 01-考虑用静态工厂方法代替构造器
- 01_考虑用静态工厂方法代替构造器
- 考虑用静态工厂方法代替构造器
- 考虑用静态工厂方法代替构造器
- 考虑用静态工厂方法代替构造器。
- 考虑用静态工厂方法代替构造器
- 考虑用静态工厂方法代替构造器
- 第一条:考虑用静态工厂方法代替构造器-----静态工厂方法讲解
- 考虑使用静态工厂方法代替类的构造器
- 图像处理专业术语中英文对照(不断补充中)
- Go学习笔记(一)初始Go以及环境安装
- POJ NOI MATH-7654 等差数列末项计算
- HDU 2612 Find a way(BFS)
- Android实现Chart.js
- 考虑用静态工厂方法代替构造器
- 增删改查的数据访问
- Linux之进程控制与管理实验五
- 注册和登陆与数据库的链接
- android保存读取对象 SharedPreferences方式
- 3532: [Sdoi2014]Lis
- 数据访问
- Python常用控制语句
- 1-网络协议基础