【发布时间】:2016-04-08 14:55:55
【问题描述】:
我一直在阅读有关 java 代理模式和调用处理程序的内容,并且到处都可以看到具体的类构造可供客户端使用。
例如,
//TwitterService service = (TwitterService) SecurityProxy.newInstance(new TwitterStub());
TwitterService service = new TwitterStub();
System.out.println(service.getTimelinePosts("abc"));
用户可以直接创建TwitterStub 的实例并访问这些方法。我想知道是否有办法不暴露或避免通过客户端构建具体类?
有没有更好的办法?
【问题讨论】:
-
你需要提供一个InvocationHandler的实现,其他什么都不需要。
-
你可以使用Factory Method Pattern或者Abstract Factory Pattern来隐藏你的构造函数的直接调用。
-
但我觉得我不太明白你的问题...
-
任何依赖注入机制似乎都可以回答这个问题。
标签: java design-patterns proxy-pattern