Политика конфиденциальностиКонтактыО сайтеОтзывыGitHubDonate
© EVILEG 2015-2018
Рекомендует хостинг
TIMEWEB
26 сентября 2018 г. 10:01

Шаблоны проектирования

шаблоны проектирования, decorator, декоратор

Цели

  • Добавить дополнительные возможности и функционал к объекту динамически. Декораторы обеспечивают гибкую альтернативу подклассу для расширения функциональности.
  • Указанное клиентом декорирование интерфейса основного объекта путем его рекурсивной упаковки.
  • Оберните подарок, положите его в коробку и оберните коробку.

Проблематика

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

25 сентября 2018 г. 10:16

PHP

шаблоны проектирования, factory, method, PHP

В шаблоне Factory Method, фабричный метод определяет, какие функции должны быть доступны не абстрактной конкретной фабрике. Эти функции должны иметь возможность создавать объекты, которые являются расширениями определенного класса. Какой именно подкласс создается, будет зависеть от значения параметра, переданного функции.

В этом примере у нас есть фабричный метод AbstractFactoryMethod , который реализует функцию makePHPBook($param)

Конкретный класс OReillyFactoryMethod factory расширяет класс AbstractFactoryMethod и может создать правильное расширение класса AbstractPHPBook для заданного значения $param.

25 сентября 2018 г. 10:09

Delphi

Delphi, шаблоны проектирования, factory, method

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

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

25 сентября 2018 г. 9:46

Шаблоны проектирования

шаблоны проектирования, composite, компоновщик

Цели

  • Составить объекты в древовидные структуры для представления целых частей иерархии. Компоновщик позволяет клиентам одинаково обрабатывать отдельные объекты и композиции объектов.
  • Рекурсивная композиция
  • «Каталоги содержат записи, каждый из которых может быть каталогом».
  • Представление иерархии один ко многим

Проблематика

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

24 сентября 2018 г. 14:43

Python 3

шаблоны проектирования, factory, Python, method

Пример фабричного метода на языке программирования Python

24 сентября 2018 г. 14:34

Java

шаблоны проектирования, factory, method, Java, JAVA

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

24 сентября 2018 г. 12:23

C++

шаблоны проектирования, factory, method, C++

Обсуждение. Фреймфорки представляют собой приложения (или подсистемы) с «местами расширений» в них. Каждый такой фреймворк определяет инфраструктуру, надстройку и поток управления для своей области деятельности, а клиент фреймворка может: осуществлять поведение структуры по умолчанию «как есть», расширить выделенные фрагменты структуры или заменить выбранные фрагменты.

В шаблоне Factory Method рассматривается понятие «создание» в контексте фреймворков. В этом примере структура знает, КОГДА должен быть создан новый документ, а не КАКОЙ это документ. «Заполнитель» Application::CreateDocument() был объявлен фреймворком, и клиент должен «заполнить пробел» для своего ;конкретного документа(ов). Затем, когда клиент запрашивает Application::NewDocument(), фреймворк впоследствии вызывает метод MyApplication::CreateDocument().

24 сентября 2018 г. 9:05

Шаблоны проектирования

шаблоны проектирования, Bridge, мост

Цели

  • Отделите абстракцию от ее реализации, чтобы они могли изменяться независимо друг от друга.
  • Создание публичного интерфейса в иерархии наследования и реализация в своей собственной иерархии наследования.
  • Помимо инкапсуляции использование изоляции

Проблематика

«Укрепление программных связей» путем использования подкласса абстрактного базового класса для обеспечения альтернативных реализаций. Это блокирует привязку ко времени компиляции между интерфейсом и реализацией. Абстракция и реализация не могут быть независимо расширены или переопределены.

22 сентября 2018 г. 8:16

Проекты на Qt

fb2-reader, reader, fb2-читалка, читалка, fb2, html

Некоторое время назад я написал статью, в которой показал как можно открыть файл формата fb2 инструментами Qt. Спустя некоторое время я заметил в ней ряд недостатков, которые решил устранить. Более того, я обнаружил, что некоторые fb2 читалки также имеют недостатки (а именно неправильное отображение таблиц), что и подтолкнуло меня к написанию этой статьи. Для начала можно ознакомиться с прошлой статьёй . Действовать будем по тому же принципу: формируем строку book в формате html и помещаем её в объект QTextBrowser.

Напомню, чтобы сформировать html-документ необходимо выполнить 3 действия: открыть тэг, заполнить его содержимым и закрыть. Поэтому для нас существует 4 варианта действий: переписываем из исходного файла, переписываем с коррективами, ничего не делаем (игнорируем), проводим специальную обработку.

21 сентября 2018 г. 11:11

Шаблоны проектирования

adapter, шаблоны проектирования

Цели

  1. Преобразование интерфейса класса в другой интерфейс. Адаптер позволяет классам работать вместе, что в противном случае могло бы быть связано с несовместимыми интерфейсами классов.
  2. Оборачивание существующего класса в новый интерфейс
  3. Соответствие старого компонента новой системе

Проблематика

Уже готовый компонент имеет всё необходимое для разработки вашей системы, но его интерфейсы несовместимы с интерфейсами классов вашего приложения.

IO
20 января 2019 г. 18:39
Ivan Otreshko

C++ - Тест 003. Условия и циклы

  • Результат:0баллов,
  • Очки рейтинга-10
IO
20 января 2019 г. 15:27
Ivan Otreshko

C++ - Тест 003. Условия и циклы

  • Результат:0баллов,
  • Очки рейтинга-10
v
17 января 2019 г. 11:51
vitalir12

C++ - Тест 004. Указатели, Массивы и Циклы

  • Результат:20баллов,
  • Очки рейтинга-10
Последние комментарии
I
16 января 2019 г. 8:06
IscanderChe

Заработало. Забыл model->select(); вписать.
I
16 января 2019 г. 8:02
IscanderChe

Всё равно пусто, хотя строка с данными в базу добавляется.
16 января 2019 г. 7:51
Евгений Легоцкой

потому, что нужно сохранять информацию для всех остальных ролей и столбцов через вызов переопределённого метода. Да к тому же вы ещё и зациклили вызов метода data. QVariant MySqlTableModel:...
I
16 января 2019 г. 7:43
IscanderChe

Сделал вот так. В tableView ничего нет, кроме заголовка. QVariant MySqlTableModel::data(const QModelIndex &index, int role) const{ if (role == Qt::DisplayRole) { QTime ...
Сейчас обсуждают на форуме
21 января 2019 г. 16:28
Михаиллл

Добрый день.Почему работая на С++, нельзя полноценно использовать dll , написанных на C#, java?И почему используя другие языки, можно использовать dll , написанных на C++?
21 января 2019 г. 16:24
Михаиллл

Нашел ссылку на древние типы данных , а тут нынешние их аналоги.Но все равно каое что непоня:что такое : LPCTSTR, CALLBACK (наверно QDialig),IDOK, EDITSTREAM, TCHARКод...
21 января 2019 г. 14:30
Евгений Легоцкой

Порядок создания тем - пункт 4
ПБ
21 января 2019 г. 9:23
Павел Богдевич

Ребята, привет. Это 2 версии одного приложения. Отличаются только способом инициализации таблицы. В одной версии работает сортировка таблицы, когда кликаешь по хедеру колонки, в другой - нет. ...
21 января 2019 г. 7:36
Евгений Легоцкой

Добрый день! Из ваего вопроса понятна первая часть. На сайте есть статья по динамическому созданию виджетов, посмотрите её для начала - Динамическое создание виджетов . ...
Присоединяйтесь к нам в социальных сетях

Для зарегистрированных пользователей на сайте присутствует минимальное количество рекламы