Pull to refresh
9
0
Виктор Брыксин @bobermaniac

User

Send message
Еще раз — в описании паттерна нет никакого «отдельного класса».

Вы русский язык понимаете?
Вы обсуждаете не «мост» а pimpl с единственной реализацией.
Ну что ж. Чем больше таких специалистов — тем более ценен я сам.
В описании паттерна я нигде не нашел фраз «выдели в отдельный класс».

Вы придумали какую-то хрень вместо «моста» и теперь героически ее побеждаете.
Ключевое здесь — это цель разделения. А цель обозначена явно — «чтобы они могли изменяться независимо».

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

Вы знакомы с понятием «публичный контракт»? Что туда входит?
Кстати, интересный момент.
The bridge pattern is a design pattern used in software engineering which is meant to «decouple an abstraction from its implementation so that the two can vary independently». The bridge uses encapsulation, aggregation, and can use inheritance to separate responsibilities into different classes.

Что в переводе означает
Bridge, Мост — шаблон проектирования, используемый в проектировании программного обеспечения чтобы «разделять абстракцию и реализацию так, чтобы они могли изменяться независимо». Шаблон bridge (от англ. — мост) использует инкапсуляцию, агрегирование и может использовать наследование для того, чтобы разделить ответственность между классами.

Может быть, вы не туда посмотрели с вашим определением?
Ну вы же говорите, что абстракция — это содержимое .h файла.

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

Вот содержимое моего .h файла.

class Pillow
{
public:
Pillow();
~Pillow();
int Pie(int vine, double meat, const char* cucumber);
}

Какую абстракцию он описывает?
Я не понимаю, как человек с десятилетним опытом может не понимать столь очевидных вещей.

Это выбивается куда-то на задворки моего подсознания вместе с Гендальфом с мечом в левой руке.
У вас настолько шокирующие откровения, что я бы оценил ваш опыт работы программистом в 1 год. Скорее даже меньше. Это так?
Я не согласен с некоторыми положениями из вашего предыдущего комментария.

Остановимся на них поподробнее.

«Если мы классически подойдем, то что такое абстракция? Это некая спецификация класса, т.е. в С++ — это .h файлы.» Это неверно. Файлы и прочая ерунда не имеют к абстракции никакого отношения. Просто в силу того, что в .h файлах есть секция private.

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

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

Кажется, что такая декомпозиция избыточна. Однако, бывают случаи, когда она необходима — например в том случае, когда одни и те же идеологические элементы реализуются с помощью разной логики. Классический пример — окна в Windows и Linux. Под собой они имеют принципиально разное API, которое, однако, может легко сводиться к некому intermediate контракту. В этом случае общая абстракция «окно» разделяется на отдельные реализации «windows-окно» и «linux-окно», для которых может иметься возможность выделения общего интерфейса на основе уже тех данных, которые мы получили при декомпозиции — в этом случае мы получаем классический pimpl.

Сама по себе декомпозиция такого уровня при отсутствии сходных абстракций с разными реализациями, конечно, бессмысленна.
Стоп-стоп. Вы про методы ничего не говорили. Может быть, просто вы неправильно методы выбрали, и не стоит клеймить определение?
Я, честно говоря, не понял, каким образом отделение абстракции от реализации вступает в противоречие с тем, что реализация должна соответствовать абстракции.
Век живи — век учись. Сто лет уже виндой пользуюсь, а про адресную книгу только вчера узнал.

Да, я пользуюсь аутлуком еще с 98-го офиса, но никогда не пользовался виндовой адресной книгой. И сейас у меня аутлук сихнронизируется по контактам с гуглом, а виндовая адресная книга почему-то пустая.
Я с вами совершенно согласен.

Просто лично мне кажется, что это как-бы слегка несравнимые вещи — адресная книга, которая появилась в Windows 7 (и которой, судя по всему, мало кто пользуется) и адресная книга в личном мобильном телефоне, без которой использование мобильника сегодня очень сильно затруднено.
Метель. Снег. Мороз. Дом. Окно. Дым. Дверь. Скрип. Шаг. Крик.

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

Радикальное решение — запрет програмного доступа к адресной книге. Чуть менее радикально — работа с ней в защищенном поле через GUI ОС, не выдавая данные наружу. Еще менее радикально — предоставление специальных средств для простого создания локальных частичных разрешений, вроде как «выбор файла» в браузере, фактически создающий для удаленного сервера разрешение на чтение одного явно выбранного пользователем файла.
У меня в папке «контакты» одна запись по имени «bober_maniac», в которой нет ни одного поля. Это при том, что у меня стоит декстопный Аутлук, в котором есть база контактов.

А как с виндовой базой контактов работать? Она как-нибудь интегрируется с приложениями? Зачем она вообще нужна? Для чего ее используют?

Я правда не знаю, я конечно видел, что в висте (или семерке, не помню уже) появилась папочка «контакты», но никогда не знал, для чего она.
Интересно, надо будет посмотреть подробнее.

Пока не читал сайт, задам, если можно, вам несколько вопросов, может вы в курсе.

1. Умеет ли он в автоматическом режиме конвертировать DOC/DOCX в PDF?

2. Как построена работа с аннотациями и цифровыми подписями?

Information

Rating
Does not participate
Location
Москва, Москва и Московская обл., Россия
Date of birth
Registered
Activity