Oop 这是什么:对象持有相同对象的静态列表,但被强制转换到接口?
我不止一次地遇到了主题中提到的情况,现在我想在这里询问Oop 这是什么:对象持有相同对象的静态列表,但被强制转换到接口?,oop,design-patterns,collections,interface,static,Oop,Design Patterns,Collections,Interface,Static,我不止一次地遇到了主题中提到的情况,现在我想在这里询问 其他观点、提示、解释,为什么某人应该/将会/做这样的事情: public class Pool { private static int MAX_ELEMS = 10; private static List<Object> instances; private static void initialise() { if(instances == null) {
其他观点、提示、解释,为什么某人应该/将会/做这样的事情:
public class Pool
{
private static int MAX_ELEMS = 10;
private static List<Object> instances;
private static void initialise()
{
if(instances == null) {
instances = new ArrayList<Object>();
// Initialise all the objects in the list.
}
}
public static Object getInstance(String key)
{
for(Object instance : instances) {
if(instance.equals(key)) { // Just an example
return instance;
}
}
}
}
有一个类A
的对象,它实现接口I_1o
此对象有一个静态成员,一个集合,由接口I_1
键入
类A
有一个接口实现的方法,称为get\u instance(key params)
。
它在集合中查找符合键参数的指定对象,并返回
相关对象
这个(设计模式,随便什么)有名字吗?有理由吗?有“最佳实践”的解释吗?为什么它看起来是一个单例,但另一方面它不是,只是递归对象
如果没有人理解我的意思,请告诉我,我会尽力澄清。这看起来像注册表或标识映射。这听起来非常像
对象池设计模式。文件
这看起来像这样:
public class Pool
{
private static int MAX_ELEMS = 10;
private static List<Object> instances;
private static void initialise()
{
if(instances == null) {
instances = new ArrayList<Object>();
// Initialise all the objects in the list.
}
}
public static Object getInstance(String key)
{
for(Object instance : instances) {
if(instance.equals(key)) { // Just an example
return instance;
}
}
}
}
公共类池
{
私有静态int MAX_ELEMS=10;
私有静态列表实例;
私有静态void初始化()
{
if(实例==null){
实例=新的ArrayList();
//初始化列表中的所有对象。
}
}
公共静态对象getInstance(字符串键)
{
例如(对象实例:实例){
if(instance.equals(key)){//只是一个例子
返回实例;
}
}
}
}
这种设计模式的原因是为了避免昂贵的对象重新实例化。例如,如果您有一个服务器连接对象的负载,并且希望限制到服务器的连接数量,那么您可以实现这样的模式。这意味着一次存在的对象不超过MAX_ELEMS
,也意味着它们不是在程序使用期间创建的;它们是在程序中的某个加载期间生成的。我不知道,这就是我问的原因。:-)Thx,这很有帮助。签名作为答案。