Как Вы классифицировали бы этот тип дизайна для классов?

Обновление

Кажется, что в более новых версиях Docker и Ubuntu файл модуля для Docker просто маскируется (указывая на /dev/null).
Вы можете проверить это, выполнив в терминале следующие команды:

sudo file /lib/systemd/system/docker.service
sudo file /lib/systemd/system/docker.socket

Вы должны увидеть, что файл модуля содержит ссылки на /dev/null.
. В этом случае все, что вам нужно сделать, это следовать предложению S34N и выполнить:

sudo systemctl unmask docker.service
sudo systemctl unmask docker.socket
sudo systemctl start docker.service
sudo systemctl status docker

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

Исходное сообщение

У меня была та же проблема, и я попытался исправить ее с предложением Сальвы Корта, но печать /etc/default/docker говорит:

# Этот файл не применяется к SYSTEMD

Итак, вот постоянное исправление , которое работает для systemd (Ubuntu 15.04 и выше):

  1. создайте новый файл /etc/systemd/system/docker.service.d/overlay.conf следующего содержания:

    [Service]
    ExecStart=
    ExecStart=/usr/bin/docker daemon -H fd:// -s overlay
    
  2. сбросить изменения, выполнив:

    sudo systemctl daemon-reload
    
  3. verify что конфигурация была загружена:

    systemctl show --property=ExecStart docker
    
  4. перезапустите докер:

    sudo systemctl restart docker
    

5
задан yogurt 19 May 2009 в 20:53
поделиться

6 ответов

Я бы классифицировал это как объект домена или бизнес-объект. Одним из преимуществ этого типа дизайна является то, что он сохраняет независимость модели от любой бизнес-логики и их можно повторно использовать в различных средах.

Второй класс может быть классифицирован как DAO (объект доступа к данным).

Этот шаблон вообще не является анти-упом и широко используется.

1
ответ дан 14 December 2019 в 13:45
поделиться

В то время как ваш класс user.cs предоставляет себя объекту передачи домена , класс Users.cs, по сути, является тем местом, где вы можете применять бизнес-правила внутри объектов доступа к данным .

Вы можете подумать о соглашении об именах ваших классов вместе с пространствами имен. Когда я смотрю на users.cs, я предполагаю, что это, по сути, класс для работы со списком пользователей.

Другой вариант - изучить Active Record Pattern , который объединит два созданных вами класса.

User.cs

public class User
{
    public string Username { get; set; }
    public string Password { get; set; }

    public User(int userID)
    {
        //data connection
        //get records
        this.Username = datarecord["username"];
        this.Password = datarecord["password"];
    }
}
3
ответ дан 14 December 2019 в 13:45
поделиться

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

1
ответ дан 14 December 2019 в 13:45
поделиться

Похоже, это может быть шаблон репозитория , это, кажется, становится все более распространенным шаблоном и используется для большого эффекта в примере Витрина Роба Конери Приложение Asp.Net MVC.

По сути, вы абстрагируете свой код доступа к данным от Модели, что в целом хорошо. Хотя я бы надеялся на немного смелости в модельном классе. Также из предыдущего опыта называть это пользователями сбивает с толку, UserRepository может быть лучше. Также можно рассмотреть возможность удаления статики (что является горячим спором), но упрощает издевательство. Кроме того, в репозитории должен быть реализован интерфейс, чтобы вы могли смоделировать его и, следовательно, заменить его фальшивым позже.

0
ответ дан 14 December 2019 в 13:45
поделиться

Первый класс является анти-ООП, потому что он содержит данные без поведения, типичный пример модели анемичной области . Это типично для людей, которые занимаются процедурным программированием на объектно-ориентированном языке.

Однако мнения разделились относительно того, имеет ли смысл помещать логику доступа к БД в саму модель предметной области (шаблон активной записи) или, как в вашем коде, в отдельный класс (шаблон объекта доступа к данным), поскольку доступ к БД является отдельной технической проблемой, которая не обязательно должна быть тесно связана с моделью предметной области.

1
ответ дан 14 December 2019 в 13:45
поделиться

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

0
ответ дан 14 December 2019 в 13:45
поделиться
Другие вопросы по тегам:

Похожие вопросы: