Есть ли хороший программный шаблон для обработки случая, когда мне нужен внешний класс-обертка, который абстрагируется от хрупкого жизненного цикла внутреннего класса? - PullRequest
0 голосов
/ 05 апреля 2019

Я сталкиваюсь с распространенным случаем, когда у меня есть определенный класс с коротким непредсказуемым жизненным циклом.

Я хочу абстрагироваться и обрабатывать ошибки внутренне, так что внешний код не должен знать или иметь дело с объектом класса, который находится или находится в недопустимом состоянии.

Это немного похоже на фабричный шаблон, но в нем есть дополнительный элемент абстрагирования от переходных ошибок.

Есть ли хороший программный шаблон, который уже решает эту конкретную проблему, и / или есть библиотека для этого?

Чтобы абстрагироваться от этого, я использую класс-оболочку ive, которую внешний код может использовать, не беспокоясь о большинстве ошибок и не создавая заново класс.

1 Ответ

0 голосов
/ 05 апреля 2019

Я не знаю ни одного фреймворка или библиотеки, но если вы имеете дело со многими хрупкими классами, возможно, стоит реализовать универсальную оболочку в духе Nullable<T> и Lazy<T>. Примерно так:

public class Fragile<T>
{
    public Fragile(Func<T> valueFactory, Func<T, bool> isStillValid)
    {
        //...
    }
    public T Value { get /* TODO */ ; }
}
...