Реализация MVC с Windows Forms

Благодаря @ M.Deinum

решение было немного больше.

enter image description here

Удалить классы Specification & amp; TelefonbuchSpecifications.

И просто вставьте TelefonbuchSpecifications как вспомогательный класс в TelefonbuchRepository

public interface TelefonbuchRepository extends JpaRepository, JpaSpecificationExecutor {

    public class TelefonbuchSpecifications {

        public static Specification hasVorname(String vorname) {
            return (root, query, cb) -> {
                return cb.like(cb.lower(root.get(Telefonbuch_.vorname)), "%" + vorname.toLowerCase() + "%");
            };
        }

        public static Specification hasNachname(String nachname) {
            return (root, query, cb) -> {
                return cb.like(cb.lower(root.get(Telefonbuch_.nachname)), "%" + nachname.toLowerCase() + "%");
            };
        }

    }
}

Для метода search в SucheController тогда:

List list = telefonbuchRepository.findAll(TelefonbuchSpecifications.hasVorname(vorname));

102
задан ardila 27 June 2016 в 10:28
поделиться

6 ответов

Я имею представление, что приложения так отличаются друг от друга и нашего понимания того, как приложения должны быть записаны, все еще очень ограничено. Мимо приложений Windows Forms я продолжил работать, так отличались друг от друга. Некоторые различия в дизайне, которые я видел, (включая большинство комбинаций):

  • Непосредственно говорите с базой данных (2 уровня)
  • Используйте бэкенд, который был записан для данного приложения (3 уровня)
  • Используйте ряд веб-сервисов, которые были записаны для использования многими приложениями и не могут быть изменены для Вашего приложения. (Архитектура для обслуживания широкого круга запросов)
  • Обновления, сделанные операциями CRUD
  • Обновления, сделанные с шаблоном "команда" (отправляющий команды на сервер бэкэнда)
  • Много использований привязки данных / никакие использования привязки данных
  • Причем большинство данных является “таблицей как” (например, счета), что для работы хорошо в средствах управления стандартной сеткой / нужны пользовательские элементы управления для большинства данных UI.
  • Один разработчик / команды 10 или 20 разработчиков (только на UI)
  • Много модульного теста с помощью насмешек и т.д. / никакие модульные тесты

Поэтому я не думаю, что возможно создать одну реализацию MVC (или MVP), который всегда соответствует хорошо.

Лучшие сообщения я видел действительно объяснение MVC и почему система MVC создается путем, это, серия "Build Your Own CAB" Jeremy D Miller. После работы, хотя это необходимо смочь понять опции намного лучше. Умное Клиентское Руководство Microsoft (CAB / Microsoft Composite Application Block) нужно также рассмотреть. Это немного сложно, но это может работать хорошо на приложения, которые имеют хорошую подгонку.

Выбор Реализации MVC/MVP для Проекта Winforms дает обзор, который стоит прочитать. Много людей как PureMVC. Я никогда не использовал его, но я посмотрел бы на него в следующий раз, когда мне нужна платформа MVC.

"Предъявитель Сначала" является подходом разработки программного обеспечения, который комбинирует идеи шаблона разработки Образцового предъявителя представления (MVP) и разработки через тестирование. Это позволяет Вам начаться путем записи тестов на языке клиента. Например:

"Когда я нажимаю кнопку 'сохранения' затем, файл должен быть сохранен, и несохраненный файл, предупреждающий, должен исчезнуть”.

У меня нет опыта с помощью "Предъявителя Сначала", но я дам ему попытку, когда я получу шанс, поскольку это выглядит очень перспективным.

Другие вопросы о Переполнении стека Вы можете, могут хотеть посмотреть на, здесь и здесь.

Если Вы думаете об использовании WPF в какой-либо точке, смотрят на Model-View ViewModel (MVVM) шаблон. Вот очень хорошее видео, на которое необходимо смотреть: Jason Dolinger на Model-View-ViewModel.

MVVM (Образцовая Модель Представления Представления) Шаблон разработки для Winforms дает другую опцию, которая может сделать это easer для преобразования в WPF, если когда-либо необходимый. Волшебный. Trevor является еще одним образцом MVVM для Windows Forms, которые также включают автоматическую привязку на основе имен свойства.


Также спросите себя, почему Вы используете MVC.

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

После того как Вы ясны на своих целях, становится легче выбрать одну реализацию или другого.

113
ответ дан Community 24 November 2019 в 04:32
поделиться

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

Обновление: Вы могли создать свой собственный запуск с чего-то более простого такой как MobileMVC. Компактный код Платформы должен компилировать/выполнять OK в Windows. Так как это - школьное присвоение, я предложил бы, чтобы Вы на самом деле провели некоторое время, учась, как MVC на самом деле работает.

6
ответ дан Brian Lyttle 24 November 2019 в 04:32
поделиться

Вы могли бы хотеть смотреть на Дифференциальное Выполнение .

Здесь это находится в SourceForge

IMO, это - значительное улучшение на MVC, хотя это все еще довольно необычно.

3
ответ дан Community 24 November 2019 в 04:32
поделиться

ОБНОВЛЕНИЕ: В дополнение к моему предыдущему ответу ниже, я предлагаю читать о "Предъявителе Сначала" подход (особенно статьи PDF)

Я рекомендовал бы MVP (шаблон PassiveView на самом деле) вместо MVC. Вам действительно не нужны никакие специальные платформы для этого, это, как Вы организуете свой код.

Один подход (который я обычно беру) должен разделить каждую форму окон на три объекта:

  1. Предъявитель/класс контроллера - это - то, с чего Вы на самом деле запускаете при разработке формы. Это - то, где большая часть/вся Ваша "бизнес-" логика должна находиться.
  2. Интерфейс представления (IView), который содержит методы, свойства и события. Этот интерфейс - все, что предъявитель знает о Вашей форме.
  3. В конце, когда Вы заканчиваете реализовывать предъявителя и представление (включая модульные тесты), можно затем создать фактический класс формы и заставить его реализовать интерфейс IView. Затем это - просто вопрос добавления соответствующих средств управления к форме и проводного соединения их к интерфейсу.

Пример кода (простой псевдокод, только для иллюстрации):

interface IView
{
    string Username { get; set; }
    string Password { get; set; }

    event EventHandler LogOnButtonClicked;

    void InformUserLogOnFailed();
    void MoveToMainScreen();
}

class Presenter
{
    public Presenter(IView view)
    {
        this.view = view;
        view.LogOnButtonClicked += new EventHandler(OnLogOnButton);
    }

    private void OnLogOnButton()
    {
        // we ask some service to verify the username/password
        bool isLogOnOk = logOnService.IsUserAndPasswordOk(view.Username, view.Password);
        if (isLogOnOk)
            view.MoveToMainScreen();
        else
        {
            view.Username = "";
            view.Password = "";
            view.InformUserLogOnFailed();
        }
    }

    private IView view;
}

class Form : IView
{
    public Form()
    {
        presenter = new Presenter(this);
    }

    public string Username
    {
        get { return TextBoxUsername.Text; }
        set { TextBoxUsername.Text = value; }
    }

    public string Password
    {
        get { return TextBoxPassword.Text; }
        set { TextBoxPassword.Text = value; }
    }

    public void InformUserLogOnFailed()
    {
        MessageBox.Show("Invalid username or password.");
    }

    public void MoveToMainScreen()
    {
        // code for opening another form...
    }

    private Presenter presenter;
}
45
ответ дан Igor Brejc 24 November 2019 в 04:32
поделиться

Microsoft Composite Interface Application block запустила свою жизнь как реализацию MVC (среди других шаблонов, которые она реализовала). Версия выпуска, однако, развитый из реализации MVP, которая может быть обсуждена, чтобы быть своего рода другой интерпретацией понятия MVC.

Если Вы готовы проверить код очень полного (и так или иначе комплекс) реализация MVP, можно найти MS-CAB как один из компонентов Фабрики клиентского программного обеспечения Microsoft Smart. Это идет с исходным кодом. Можно найти его здесь.Удачи!

2
ответ дан Rui Craveiro 24 November 2019 в 04:32
поделиться

Хороший пример при прокрутке Вашей собственной реализации MVC, использующего Windows Forms, может быть найден здесь. Исходный код включен.

Поскольку Вы читаете, изучаете и пишете код для этого присвоения, Вы собираетесь найти, что существует много разногласий по вопросам того, как MVC должен быть реализован. Этот - простой случай, который отражает разделение проблем, а также хороший пример 'инфраструктуры', требуемой поднять трубку это.

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

2
ответ дан Gary.Ray 24 November 2019 в 04:32
поделиться
Другие вопросы по тегам:

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