这个类对任何人都有意义吗?

本文关键字:有意义 任何人 | 更新日期: 2023-09-27 18:34:29

我是一个肮脏的 c# 程序员,今天我正在浏览高级开发人员的代码,我意识到他们使每个"事物"都是一个对象"一个类",并遵循"抽象工厂"等模式并创建接口、抽象基类等我发现很难理解代码,以及抽象和接口+工厂关系背后的原因。我看了视频并单独理解它们,但当我试图在这种情况下理解它们时,它会让我感到震惊。

回到问题(由于隐私原因,我更改了对象名称(

这是我无法理解的类部分,因为它应用了什么模式或原则,

internal sealed class Mango : GenericMango, IMango
    {
        public static readonly IMangoFactory<IMango> Factory;
        static Mango()
        { // this line below specially i don't understand
            Factory = new MangoFactory<IMango>((aBC, disposeMango) => new Mango(aBC, disposeMango));
        }
        private Mango(string aBC, bool disposeMango)
            : base(aBC, disposeMango)
        {
        }
        // more methods and properties in here etc..

这个类对任何人都有意义吗?

很难帮助你,因为我不明白你不明白的东西。

当然,我不知道为什么最初的开发人员会遇到这个麻烦,却没有使用依赖注入的麻烦。

专门放大您的问题线:

Factory = new MangoFactory<IMango>((aBC, eatableMango) => new Mango(aBC, eatableMango));

我假设您知道什么是匿名委托,以及什么是 lambda 表达式。 如果你不熟悉这些,那么伊戈尔就是你的答案。

这基本上是单例工厂模式的"λ表达式作为工厂方法"亚种。

我还假设在MangoFactory的某个地方有一个Func<string,bool,IMango>成员。 这是芒果工厂用来生成新芒果的功能。

最终,所遵循的模式是(可能(以下行是用于实例化芒果的模式:

var theMango = Mango.Factory.CreateMango("foo",true);

目标是隐藏芒果建设的细节。

Factory = new MangoFactory<IMango>((aBC, eatableMango) => new Mango(aBC, eatableMango));

它使用lambda表达式,语法糖为委托

请参阅文章 http://msdn.microsoft.com/en-us/library/vstudio/bb397687.aspx