gpt4 book ai didi

c# - 简单功能的继承(或其他重用方式)

转载 作者:行者123 更新时间:2023-12-03 03:26:58 25 4
gpt4 key购买 nike

我有一个类,为了控制如何创建实例并确保唯一值,我在类中执行了以下操作:

  1. 将构造函数限制为私有(private) lavel,
  2. 为现有实例创建静态字典
  3. 一个静态函数,通过键从字典中返回现有或新项目。

这里的例子:

class Foo
{
private Foo() { }

private static Dictionary<string, Foo> FooCollection = new Dictionary<string, Foo>();

public static Foo GetFoo(string key)
{
Foo result;
if (FooCollection.TryGetValue(key, out result) == false)
{
result = new Foo();
FooCollection.Add(key, result);
}
return result;
}
}

我现在还有几个具有完全相同原理的类。这里不可能继承,因为所有类都共享同一个字典。

那么有办法重用代码吗?

最佳答案

根据您发布的内容,您可以将其设为通用:

class Factory<T> where T:new()
{
private Factory() { }

private static Dictionary<string, T> Inventory = new Dictionary<string, T>();

public static T GetObject(string key)
{
T result;
if (Inventory.TryGetValue(key, out result) == false)
{
result = new T();
Inventory.Add(key, result);
}
return result;
}
}

请注意,我将该类称为 Factory,因为它使用 Flyweight Factory pattern

关于c# - 简单功能的继承(或其他重用方式),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23632922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com