用静态工厂方法代替构造函数
来源:互联网 发布:阿里巴巴比淘宝 编辑:程序博客网 时间:2024/05/21 08:41
package EffectiveJava;import java.util.HashMap;import java.util.Map;import static java.lang.System.out;interface Service{//里面可以提供操作服务的方法void say();}// 提供都接口,其提供一个返回服务的方法interface Provider{Service newService();// 返回服务的方法}class Services{private Services() {}// 提供一个注册服务、取得 服务的依法private static Map<String,Provider> providers = new HashMap<String,Provider>();public static final String DEFAULT = "DEFAULT";public static void registerProvider(String name,Provider provider){providers.put(name, provider);}public static Service newInstance(String name) {Provider p = providers.get(name);if(p == null)throw new IllegalArgumentException(name+" not register");return p.newService();}public static Service newInstance() { return providers.get(DEFAULT).newService();}}public class ProviderService {private static Provider CLOSE = new Provider() { // 定义一个provider,用于提供服务@Overridepublic Service newService() { // 重写provider 接口里的方法return new Service() { // 返回一个Service接口的匿名内public void say() {out.println("CLOSE Service alreay loading...");}};}};private static Provider JUMP = new Provider() {public Service newService() {return new Service() {public void say() {out.println("JUMP Service alreay loading...");}};}};public static void main(String argsp[]) {Services.registerProvider("close", CLOSE);Services.registerProvider("jump", JUMP);Services.newInstance("close").say();Services.newInstance("jump").say();}}/* * 服务提供者框架 * Service :服务接口 * Provider:提供者接口,用于提供服务,有一个得到服务的方法 * Services:提供服务类,给定String服务名,得到其相应的服务 * 因为是给定String 名,得到相应的服务对象,可以得到反射得到相应的类再实例化,也可以在 * Services 类中维护一个Map<String,Provider> 的映射表,在得到一个服务之前要注册,也就是map.put(String), * 放进注册中,在得到newInstance的时候,再map.get(String) 就行 * 从里面得到相应的Provider,再求得其 * 提供的服务对象 * */
用静态工厂方法代替构造函数的优点
1.不一定要创建对象
2.可以返回指定类型的对象,如果返回集合类时,我们可以返回一个Collection 接口的对象
下面是服务提供者框架:
- 用静态工厂方法代替构造函数
- 《Effective Java》: 考虑用静态工厂方法代替构造函数
- 用静态工厂方法代替构造器
- 用静态工厂方法代替构造器
- 用静态工厂方法代替构造器
- 用静态工厂方法代替构造器
- 1、考虑使用静态工厂方法代替构造函数。
- 静态工厂方法代替构造函数的优缺点
- item1:使用静态工厂方法代替构造函数
- 创建和销毁对象--考虑用静态工厂方法代替构造函数
- [Effective Java] 第1条 考虑用静态工厂方法代替构造函数
- Effective Jave——第1条: 考虑用静态工厂方法代替构造函数
- 1.考虑用静态工厂代替构造函数
- 01、考虑用静态工厂方法代替构造器
- 考虑用静态工厂方法代替构造器
- [Effective Java]考虑用静态工厂方法代替构造器
- 第一条:考虑用静态工厂方法代替构造器
- 考虑用静态工厂方法代替构造器
- 第六周实验报告2
- C#学习:综合练习聊天机器人第一版
- Java基础05(补充二)-异或的应用
- hadoop的Streaming学习(续)
- jquery插件弹出对话框
- 用静态工厂方法代替构造函数
- Qt4.6 QMessageBox 使用大全
- jquery插件之面板
- 第六周任务三之平面坐标点
- 有时候经常会出现端口占用的情况。怎么查看端口占用情况?
- Android需不需要手动退出
- 常用正则表达式
- 单精度与双精度问题
- java递归常见的面试题