Фабричный метод
/ Паттерны проектирования / Порождающие паттерны
Также известен как: Виртуальный конструктор, Factory Method
Суть паттернаФабричный метод — это порождающий паттерн проектирования, который определяет общий интерфейс для создания объектов в суперклассе, позволяя подклассам изменять тип создаваемых объектов.
ПроблемаПредставьте, что вы создаёте программу управления грузовыми перевозками. Сперва вы рассчитываете перевозить товары только на автомобилях. Поэтому весь ваш код работает с объектами класса Грузовик
.
В какой-то момент ваша программа становится настолько известной, что морские перевозчики выстраиваются в очередь и просят добавить поддержку морской логистики в программу.
Добавить новый класс не так-то просто, если весь код уже завязан на конкретные классы.
Отличные новости, правда?! Но как насчёт кода? Большая часть существующего кода жёстко привязана к классам Грузовиков
. Чтобы добавить в программу классы морских Судов
, понадобится перелопатить всю программу. Более того, если вы потом решите добавить в программу ещё один вид транспорта, то всю эту работу придётся повторить.
В итоге вы получите ужасающий код, наполненный условными операторами, которые выполняют то или иное действие, в зависимости от класса транспорта.
РешениеПаттерн Фабричный метод предлагает создавать объекты не напрямую, используя оператор new
, а через вызов особого фабричного метода. Не пугайтесь, объекты всё равно будут создаваться при помощи new
, но делать это будет фабричный метод.
Подклассы могут изменять класс создаваемых объектов.
На первый взгляд, это может показаться бессмысленным: мы просто переместили вызов конструктора из одного конца программы в другой.
Но теперь вы сможете переопределить фабричный метод в подклассе, чтобы изменить тип создаваемого продукта.Чтобы эта система заработала, все возвращаемые объекты должны иметь общий интерфейс. Подклассы смогут производить объекты различных классов, следующих одному и тому же интерфейсу.
Все объекты-продукты должны иметь общий интерфейс.
Например, классы Грузовик
и Судно
реализуют интерфейс Транспорт
с методом доставить
. Каждый из этих классов реализует метод по-своему: грузовики везут грузы по земле, а суда — по морю. Фабричный метод в классе ДорожнойЛогистики
вернёт объект-грузовик, а класс МорскойЛогистики
— объект-судно.
Пока все продукты реализуют общий интерфейс, их объекты можно взаимозаменять в клиентском коде.
Для клиента фабричного метода нет разницы между этими объектами, так как он будет трактовать их как некий абстрактный
. Для него будет важно, чтобы объект имел метод доставить
, а как конкретно он работает — не важно.
Продукт определяет общий интерфейс объектов, которые может произвести создатель и его подклассы.
Конкретные продукты содержат код различных продуктов. Продукты будут отличаться реализацией, но интерфейс у них будет общий.
Создатель объявляет фабричный метод, который должен возвращать новые объекты продуктов. Важно, чтобы тип результата совпадал с общим интерфейсом продуктов.
Зачастую фабричный метод объявляют абстрактным, чтобы заставить все подклассы реализовать его по-своему. Но он может возвращать и некий стандартный продукт.
Несмотря на название, важно понимать, что создание продуктов не является единственной функцией создателя. Обычно он содержит и другой полезный код работы с продуктом. Аналогия: большая софтверная компания может иметь центр подготовки программистов, но основная задача компании — создавать программные продукты, а не готовить программистов.
Конкретные создатели по-своему реализуют фабричный метод, производя те или иные конкретные продукты.
Фабричный метод не обязан всё время создавать новые объекты. Его можно переписать так, чтобы возвращать существующие объекты из какого-то хранилища или кэша.
В этом примере Фабричный метод помогает создавать кросс-платформенные элементы интерфейса, не привязывая основной код программы к конкретным классам элементов.
Пример кросс-платформенного диалога.
Фабричный метод объявлен в классе диалогов. Его подклассы относятся к различным операционным системам. Благодаря фабричному методу, вам не нужно переписывать логику диалогов под каждую систему. Подклассы могут наследовать почти весь код из базового диалога, изменяя типы кнопок и других элементов, из которых базовый код строит окна графического пользовательского интерфейса.
Базовый класс диалогов работает с кнопками через их общий программный интерфейс. Поэтому, какую вариацию кнопок ни вернул бы фабричный метод, диалог останется рабочим. Базовый класс не зависит от конкретных классов кнопок, оставляя подклассам решение о том, какой тип кнопок создавать.
Такой подход можно применить и для создания других элементов интерфейса. Хотя каждый новый тип элементов будет приближать вас к Абстрактной фабрике.
// Паттерн Фабричный метод применим тогда, когда в программе
// есть иерархия классов продуктов.
interface Button is
method render()
method onClick(f)
class WindowsButton implements Button is
method render(a, b) is
// Отрисовать кнопку в стиле Windows.
method onClick(f) is
// Навесить на кнопку обработчик событий Windows.
class HTMLButton implements Button is
method render(a, b) is
// Вернуть HTML-код кнопки.
method onClick(f) is
// Навесить на кнопку обработчик события браузера.
// Базовый класс фабрики. Заметьте, что "фабрика" — это всего
// лишь дополнительная роль для класса. Скорее всего, он уже
// имеет какую-то бизнес-логику, в которой требуется создание
// разнообразных продуктов.
class Dialog is
method render() is
// Чтобы использовать фабричный метод, вы должны
// убедиться в том, что эта бизнес-логика не зависит от
// конкретных классов продуктов. Button — это общий
// интерфейс кнопок, поэтому все хорошо.
Button okButton = createButton()
okButton.onClick(closeDialog)
okButton.render()
// Мы выносим весь код создания продуктов в особый метод,
// который назвают "фабричным".
abstract method createButton():Button
// Конкретные фабрики переопределяют фабричный метод и
// возвращают из него собственные продукты.
class WindowsDialog extends Dialog is
method createButton():Button is
return new WindowsButton()
class WebDialog extends Dialog is
method createButton():Button is
return new HTMLButton()
class Application is
field dialog: Dialog
// Приложение создаёт определённую фабрику в зависимости от
// конфигурации или окружения.
method initialize() is
config = readApplicationConfigFile()
if (config.OS == "Windows") then
dialog = new WindowsDialog()
else if (config.OS == "Web") then
dialog = new WebDialog()
else
throw new Exception("Error! Unknown operating system.")
// Если весь остальной клиентский код работает с фабриками и
// продуктами только через общий интерфейс, то для него
// будет не важно, какая фабрика была создана изначально.
method main() is
this.initialize()
dialog.render()
ПрименимостьКогда заранее неизвестны типы и зависимости объектов, с которыми должен работать ваш код.
Фабричный метод отделяет код производства продуктов от остального кода, который эти продукты использует.
Благодаря этому, код производства можно расширять, не трогая основной. Так, чтобы добавить поддержку нового продукта, вам нужно создать новый подкласс и определить в нём фабричный метод, возвращая оттуда экземпляр нового продукта.
Когда вы хотите дать возможность пользователям расширять части вашего фреймворка или библиотеки.
Пользователи могут расширять классы вашего фреймворка через наследование. Но как сделать так, чтобы фреймворк создавал объекты из этих новых классов, а не из стандартных?
Решением будет дать пользователям возможность расширять не только желаемые компоненты, но и классы, которые создают эти компоненты. А для этого создающие классы должны иметь конкретные создающие методы, которые можно определить.
Например, вы используете готовый UI-фреймворк для своего приложения. Но вот беда — требуется иметь круглые кнопки, вместо стандартных прямоугольных. Вы создаёте класс RoundButton
. Но как сказать главному классу фреймворка UIFramework
, чтобы он теперь создавал круглые кнопки, вместо стандартных?
Для этого вы создаёте подкласс UIWithRoundButtons
из базового класса фреймворка, переопределяете в нём метод создания кнопки (а-ля createButton
) и вписываете туда создание своего класса кнопок. Затем используете UIWithRoundButtons
вместо стандартного UIFramework
.
Когда вы хотите экономить системные ресурсы, повторно используя уже созданные объекты, вместо порождения новых.
Такая проблема обычно возникает при работе с тяжёлыми ресурсоёмкими объектами, такими, как подключение к базе данных, файловой системе и т. д.
Представьте, сколько действий вам нужно совершить, чтобы повторно использовать существующие объекты:
- Сначала вам следует создать общее хранилище, чтобы хранить в нём все создаваемые объекты.
- При запросе нового объекта нужно будет заглянуть в хранилище и проверить, есть ли там неиспользуемый объект.
- А затем вернуть его клиентскому коду.
- Но если свободных объектов нет — создать новый, не забыв добавить его в хранилище.
Весь этот код нужно куда-то поместить, чтобы не засорять клиентский код.
Самым удобным местом был бы конструктор объекта, ведь все эти проверки нужны только при создании объектов. Но, увы, конструктор всегда создаёт новые объекты, он не может вернуть существующий экземпляр.
Значит, нужен другой метод, который бы отдавал как существующие, так и новые объекты. Им и станет фабричный метод.
Шаги реализацииПриведите все создаваемые продукты к общему интерфейсу.
В классе, который производит продукты, создайте пустой фабричный метод. В качестве возвращаемого типа укажите общий интерфейс продукта.
Затем пройдитесь по коду класса и найдите все участки, создающие продукты. Поочерёдно замените эти участки вызовами фабричного метода, перенося в него код создания различных продуктов.
В фабричный метод, возможно, придётся добавить несколько параметров, контролирующих, какой из продуктов нужно создать.
На этом этапе фабричный метод, скорее всего, будет выглядеть удручающе. В нём будет жить большой условный оператор, выбирающий класс создаваемого продукта. Но не волнуйтесь, мы вот-вот исправим это.
Для каждого типа продуктов заведите подкласс и переопределите в нём фабричный метод. Переместите туда код создания соответствующего продукта из суперкласса.
Если создаваемых продуктов слишком много для существующих подклассов создателя, вы можете подумать о введении параметров в фабричный метод, которые позволят возвращать различные продукты в пределах одного подкласса.
Например, у вас есть класс
Почта
с подклассамиАвиаПочта
иНаземнаяПочта
, а также классы продуктовСамолёт
,Грузовик
иПоезд
.Авиа
соответствуетСамолётам
, но дляНаземнойПочты
есть сразу два продукта. Вы могли бы создать новый подкласс почты для поездов, но проблему можно решить и по-другому. Клиентский код может передавать в фабричный методНаземнойПочты
аргумент, контролирующий тип создаваемого продукта.Если после всех перемещений фабричный метод стал пустым, можете сделать его абстрактным. Если в нём что-то осталось — не беда, это будет его реализацией по умолчанию.
- Избавляет класс от привязки к конкретным классам продуктов.
- Выделяет код производства продуктов в одно место, упрощая поддержку кода.
- Упрощает добавление новых продуктов в программу.
- Реализует принцип открытости/закрытости.
- Может привести к созданию больших параллельных иерархий классов, так как для каждого класса продукта надо создать свой подкласс создателя.
Многие архитектуры начинаются с применения Фабричного метода (более простого и расширяемого через подклассы) и эволюционируют в сторону Абстрактной фабрики, Прототипа или Строителя (более гибких, но и более сложных).
Классы Абстрактной фабрики чаще всего реализуются с помощью Фабричного метода, хотя они могут быть построены и на основе Прототипа.
Фабричный метод можно использовать вместе с Итератором, чтобы подклассы коллекций могли создавать подходящие им итераторы.
Прототип не опирается на наследование, но ему нужна сложная операция инициализации. Фабричный метод, наоборот, построен на наследовании, но не требует сложной инициализации.
Фабричный метод можно рассматривать как частный случай Шаблонного метода. Кроме того, Фабричный метод нередко бывает частью большого класса с Шаблонными методами.
«Мы готовим кейсы для суда истории». Глава Freedom Letters о книгах нового времени.
Маша Мортон: Почему сейчас вообще необходимо неподцензурное издательство?
Георгий Урушадзе: Начнем с того, что необходимо в принципе издательство, которое бы освещало современные темы, волнующие людей. Это и война, и ее последствия, и происходящее внутри России: какой-то честный взгляд, информация о том, что сейчас происходит в российской политике итак далее. И так получается, что такие публикации возможны только в неподцензурном издании. Дальше мы можем вспомнить отдельную тему, значимую, наверное, для, по меньшей мере, десяти-пятнадцати процентов людей – это тема сексуальных меньшинств, которую в России сейчас непросто закрывают от публики — нельзя выпустить книжку со словом «гей». Недавно издательство, выпустившее роман, где одна из героинь лесбиянка, выпустило его с кучей пустых строк.
Просто невозможно употребить даже такое слово. Все боятся. И при том, что эта тема важная. Я даже скажу, что это никакая не пропаганда – в России почему-то очень боятся пропаганды, как будто можно, прочитав книжку, изменить ориентацию, будто она не от природы. Так вот, если бы можно было действительно изменить ориентацию, прочитав книжку, и ориентацию можно было менять, как платье, прическу, цвет волос или квартиру, то, прочитав нашу книжку «Спрингфилд», которую мы выпустили, вряд ли нашелся бы хоть кто-то, кто захотел стать геем после этой книжки. Это, скорее, антипропаганда. Потому что там люди страдают и им тяжело. Их не принимает мама, школа и так далее. И кто же в здравом уме захочет стать геем, начитавшись про эти страдания?
Слово «гей» аннулировано в России. Слово «лесбиянка» аннулировано в России. Это ответ в том числе на вопрос, почему нужны неподцензурные издательства.
Но, тем не менее, даже когда я для российских СМИ пробую рассказывать про такую книжку и говорю, что герой гей, текст может выйти cо словом: герой «нескрепный».
Слово «гей» аннулировано в России. Слово «лесбиянка» аннулировано в России. Это ответ в том числе на вопрос, почему нужны неподцензурные издательства.
У нас нет такого большого количества книг, чтобы на эту тему говорить. По сути, она сейчас одна, но многим она важна. И действительно, эта книжка сейчас уже хит. Все ее хотят, все ее покупают, журналисты в России просят прислать почитать и так далее. То есть, действительно, вы знаете, власть сама, запрещая что-то, способствует интересу к этой теме. А люди не дураки, они найдут способ прочитать, увидеть, обсудить и так далее.
М.М.: Почему это все? Пустые места вместо слова «лесбиянка»?
Г.У.: Государству нужен образ врага. Причем нужен многослойный образ врага, чтобы люди, которые задумываются, почему в России все плохо, в последнюю очередь подумали, что правительство что-тоне так делает или Кремль делает, и надо со всеми дружить и не со всеми воевать. Их обкладывают многочисленными такими, знаете, как «капустными листами», разного рода мифами о том, что во всем виноваты США или скандинавы или Антанта. Или во всем виноваты, как это называется, англосаксы, да? А также геи, а также, не знаю, западные СМИ, НАТО и так далее. Собственно, человек, который живет внутри такого «капустного листа», он всегда найдет, чем объяснить какие-то проблемы.
И плюс, понимаете, у власти в России люди, чьи лучшие годы, молодые годы, годы, о которых принято ностальгировать, пришлись на время расцвета застоя. Но Советский Союз, который они считают великой страной… Я жил в Советском Союзе, я не понимаю, что там можно было считать великим. Все, что было хорошего, держалось просто на людях – не на строе, не на Брежневe и не наполитикe ЦК КПСС. После путча 1991 года я очень был молодым человеком, но пробрался, пользуясь несколькими месяцами тотальной свободы, в архивы ЦК КПСС и КГБ СССР и изучал там, собственно, документы про Советский Союз. У меня никаких иллюзий про эту страну тогда не осталось. Я понимал, что это тяжелая, антивитальная такая страна. И я никогда не хотел вернуться в Советский Союз. Я считал, что «совок» — это такое страшное политическое обвинение. А нынешние правители считают, что «совок» — это очень хорошо. И они сами, возможно, решают лишь немногое, а все остальные, Дума, вот это все, пропагандисты и так далее пытаются угадать их желания и начинают накручивать.
То есть, на самом деле не факт, что Кремль управляет телевизором. В той же степени, может быть, телевизор управляет Кремлем. Потому что телевизор, может быть, даже более радикален. Да и Кремль, может быть, и не думает о том, что надо всех, что называется, щемить. А пропаганда старается, потому что, знаете, в провале армии кто виноват? — Ну, не армия же сама! И не воровство тотальное, и не неумение управлять, и не политика! Виноват кто-нибудь еще, и надо на кого-то периодически списывать вину.
М.М.: Помните, у Брэдбери люди запоминали книги наизусть. То есть, люди становились книгами. Книга ведь приобретает в условиях тотальных запретов абсолютно сакральное значение. Можно ли чего-то подобного ожидать сейчас?
Г.У.: Во-первых, книга для меня всегда была источником информации, которую не получить просто так в Интернете и так далее. В книге есть целостность, системность, определенный подход, который может нравиться больше, чем куча статей в Википедии. Как-то мы делали конкурс произведений для детей. И там победила книжка под названием «Мужчинам до 16 об автомобилях». И вот удивительно, что нигде больше в Интернете нельзя было найти подобный свод информации для, например, 16-летних молодых людей. И это многих вернуло к книжкам, потому что автомобилями интересуются все мальчишки, и они, естественно, захотели такую книжку взять в руки – и поняли, что нигде больше такой цельной, системной информации нет.
Вот сейчас, например, мы издадим сборник речей российских политзаключенных. И их последние слова на суде. Если человек захочет сам найти эту информацию, она в открытых источниках, как правило. Но ему для этого придется потратить две недели. Что-то найти на YouTube, что-то найти в Телеграме, в каких-то СМИ, в Фейсбуке – и в здравом уме ни один читатель этого делать не будет. Мы за него это сделали. И в этом смысле книжка уникальная. Понимаете, собранная под одной обложкой не уникальная информация может стать уникальной.
Или, например, наша книга «Спрингфилд». Это великий роман, это роман поколения, один из лучших русских романов за многие, многие годы. .. И где еще такое прочитают? — Нигде же этой книги больше нет. Пираты, конечно, активничают, скачивание через пиратов очень большое идет. Но если мы говорим про легальное поле, то эта книга может быть только у нас во Freedom Letters. Такое впечатление нельзя получить от кино, потому что в России не снято такое кино. Нельзя получить из газет, потому что нет такой информации. То есть книга действительно может быть уникальными источником.
М.М. А можно я спрошу про название Freedom Letters и, в связи с этим, про тематику? Вот мы уже упомянули ЛГБТ, вы сейчас упомянули речи политзаключенных. О чем ваше издательство?
Г.У. Начнем от противного. Мы не публикуем тексты, которые можно опубликовать в России. Зачем? Какой смысл? Мы не публикуем тексты пропагандистские. Причем неважно, с какой стороны эта пропаганда. Мы не публикуем тексты провластные, неважно, какой власти. Не публикуем графоманов, бездарную литературу и так далее. Соответственно, что мы публикуем? — Мы публикуем талантливых авторов. И здесь можно, конечно, говорить про критерии, но в первую очередь – это счастье таких авторов найти. Мы публикуем свободные книги. То есть у нас нет никакой внутренней цензуры, у нас нет позиции даже главного редактора. У нас нет людей, которые бы «причесывали» тексты и что-то из них вымарывали.
И знаете, я вот увидел – я сейчас немножко отвлекусь от тематики – увидел, насколько оказывается востребованным наше издательство.
И как мы уже с вами выяснили, через книжки нельзя сменить ориентацию или стать грубее, хуже и так далее. Через книжку можно стать лучше.
Безумно людям хочется свободного слова, безумно. Людям хочется обсуждения разных тем. Человек умный, читатель умный. Он сам разберется, его книжка или не его. И не надо его просвещать или ему запрещать, или закрашивать какие-то темы или слова. Это просто неуважение к человеку. Человек сам разберется. И как мы уже с вами выяснили, через книжки нельзя сменить ориентацию или стать грубее, хуже и так далее. Через книжку можно стать лучше.
Если к темам, то я задумал несколько важных серий нон-фикшн литературы. Мне интересно, как мы дошли до жизни такой. И фикшн там будет: сейчас выпустили книгу Юлия Дубова в этой серии. Но в принципе, это серия для нон-фикшн. Как мы дошли до жизни такой, что в России за последние двадцать, может, даже больше лет случилось, что привело нас к этому, к этой точке, где мы сейчас? Как деградировала судебная система? Медийная система, правоохранительная, избирательная? Все это безумно важные вещи. Я разговариваю бесконечно с разными авторами, чтобы они написали книжки на эту тему.
И частные случаи, и общие случаи, вопиющие случаи этих всех процессов. Эти книжки тоже невозможно издать в России. И мы хотим это делать. Как я говорю, мы готовим эти кейсы если не для Гааги – все-таки не наша работа и квалификация готовить что-то для Гааги – но для суда истории. Потом, когда все закончится, задним умом все будут крепки, и все будут понимать, что происходило. Но нам важно это фиксировать сейчас. Скоро выйдет книжка про сопротивление внутри России. Как оно идет, сколько в это вовлечено людей и так далее. Готовим книжку Георгия Почепцова, о том, что есть пропаганда в принципе, как она работает, какими методами действует итак далее. Довольно много книг, по крайней мере, на уровне замысла, уже есть. Хочется со временем издавать и переводную литературу – тоже на темы, которые не принято обсуждать, например, в обычном российском мейнстриме.
Хочется помогать украинским авторам. Мы придумали серию «Слова Украины». Это серия для писателей, для прозаиков и поэтов украинских, которые пишут на русском, на украинском и так далее. И довольно много уже книг готовится в этой серии. Мы хотим делать книги в поддержку новых эмигрантов, это психологические книги. Как найти себя в изменившихся обстоятельствах, как научиться их принимать? Хочется сделать книги для детей, которые бы объяснили им, что происходит в этом новом мире. Почему их друзья уехали, почему они сами уехали и так далее. Хочется еще и биографию Новодворской. Биографию Зеленского, биографию Навального. В общем, в планах довольно много.
Начиная, я думал издать тридцать книг. Сейчас я понимаю, что их, конечно, будет больше – на конец мая уже будет больше двадцати. И в электронном виде, и в бумаге. Я уже заполняю планы на июль, они тоже почти заполнены. То есть, уже можно сказать, что до конца июля будет примерно сорок, до конца августа пятьдесят. Ну и осень тоже обычно у издателей бурная, поэтому, наверное, издадим довольно много всего.
М.М.: Сейчас идут постоянные дискуссии на тему русской культуры. Можно ли сказать, что новая литература, которая сейчас будет выходить – как публицистика, так и художественная литература –будет переосмысливать понятие русской культуры и русской литературы. И можно ли себе представить, что русская культура или русская литература переместится за рубеж?
Г. У.: Ну, смотрите, русская литература – она по своей сути и природе гуманистическая. Она про то, как любить людей, как радоваться жизни, как побеждает добро. И в этом смысле русская литератураникак не поменяется. Она останется такой же доброй. И в этом смысле издательство стоит на обычных, гуманитарных, христианских, буддистских, мусульманских ценностях. А также, наверное, ценностях совсем других религий. Это любовь. Ценность человеческой жизни. Это любовь к жизни, это любовь друг к другу. И в этом нет ничего плохого.
Русская литература – она гуманистична, и ее не перебьет ничем, она не может стать другой. Как и, наверное, литература в целом.
Писатель, который призывает убивать в нынешних условиях, поддерживает агрессию – он сразу выпадает из культуры в принципе.
Писатель, который призывает убивать в нынешних условиях, поддерживает агрессию – он сразу выпадает из культуры в принципе. Может быть, поэтому сейчас в России, хотя для писателей и открыты все пути и возможности, ничего талантливого не появляется. Не к ночи будет помянут – но Прилепин c 2014 года ничего нормального, ничего нового не пишет. У него была пара интересных вещей. Все, нет больше такого писателя. Это, видимо, все-таки связано с выходом из гуманистического поля. Вышел писатель.
М.М.: Можно ли представить себе, что в России будут запрещать даже классику или современную классику, Войновича?
Г.У.: Первый ответ: ну пусть попробуют. Это будет отличный способ привлечь внимание к литературе. Запрещенку любят. Конечно, будут искать возможности ее прочитать. Все помнят опыт Сорокина. Сорокин был известен в довольно узких кругах интеллигенции, читателей, интеллектуальной литературы. Но после того, как одно прокремлевское движение устроило, по-моему, у Большого театра акцию надругательства над книгами Сорокина, он стал сразу известный писатель. Этих прокремлевских товарищей уже никто не помнит. А Сорокин стал широко известен. Поэтому все-таки я думаю, что из того случая люди во власти сделали правильный вывод. Что надо все делать тихо, нешумно, без ажитации. Какие-то команды были по телефону даны, из библиотек что-то изымалось или ставилось на специальное хранение, откуда нельзя выдать, например, человеку эту книгу домой. В каких-то магазинах оборачивали «иноагентов» и даже не «иноагентов» — как, например, Улицкую — бумагой или пленкой. Это все только привлекало внимание и давало возможность авторам писать, что вот, меня запрещают. И, соответственно, у людей возникал дополнительный интерес. В России за литературу отвечают или курируют довольно умные люди. Они это понимают. Именно поэтому нет никаких костров из книг.
Это первое. Второе. Интересно, как можно в принципе запретить современную литературу, которая распространяется, например, по электронной почте? Я думаю, что никак.
М.М.: Сейчас говорят, что русская литература не справилась со своей задачей. Вы тоже сказали, что русская литература построена на гуманизме. И вот получается, что вот была такая литература – а Россия пришла к тому, к чему пришла. И в связи с этим вопрос: а стоит ли вообще писать?
Г.У.: Ну, это такие очень резкие обобщения, конечно. Обобщения, как учили нас Ильф и Петров применительно к Америке, в принципе, не работают. Вот смотрите, что значит «справилась с задачей» или «не справилась с задачей»? Кто эту задачу возлагал на литературу? Каждый человек сам решает, что ему читать, в какую сторону ему расти, развиваться вверх, вниз, вбок и так далее, и какую информацию получать. Я не верю, что любой живущий при диктаторском режиме человек неспособен получить какую-то другую информацию, осмыслить ее и принять какие-то свои решения. Людям просто удобнее об этом не думать.
Есть такая история. Если я помню правильно, то Даниил Гранин после войны через какое то время приехал то ли в Освенцим, то ли куда-то, и там подошел к киоску купить воды. И увидел, что вот этот киоск стоит прямо вот где трубы в концлагере.
М.М.: Недалеко от печей.
Е.У.: Да, и он спросил у пожилой дамы-продавщицы: «А вы? Вы этого не знали, ничего не знали? Выже могли посмотреть!». На что она сказала: «Мы смотрели в другую сторону». Понимаете, это решение самого человека, в какую сторону смотреть.
М.М.: Получается, ваше издательство, дает возможность человеку увидеть то, что на самом деле происходит. Значит, книги способны повлиять на режим и, в конце концов, изменить ситуацию?
Г.У.: Книги, безусловно, способны дать информацию, помочь людям. В конце концов, одна из задачи здателя еще и помогать писателям. А писателям можно помогать, только издавая их. Они хотят быть изданными, хотят писать произведения. Я опять же не могу за всех говорить, но мне авторы говорили: хорошо, что у тебя есть издательство такое, мы тогда напишем свои тексты. Сегодня я разговаривал с одним очень известным человеком. Он говорит, я написал книгу на иностранном языке, хотел бы на русском, но у меня не было никакой мотивации писать ее, пока не было твоего издательства. Поэтому издательство будет помогать, в том числе и таким людям.
Возвращаясь к вопросу о том, смогла что-то сделать литература или нет – во-первых, литература никому ничего не должна. Мы сделаем книгу какую-то – кто хочет, ее прочитает, кто не хочет, не прочитает. Я силой не буду в глаза человеку бросать страницами. Рассказывая о том, что какая-то есть хорошая книга, я сделал свою часть работы. У читателя своя работа, и это уже ответственность читателя. Поэтому никакого мессианства! Никакой такой роли «белого господина» перед туземцами нет и быть не может. У каждого свои задачи и свои ответственности. Каждый за себя отвечает. Мы делаем эту часть работы. Кому-то она будет нужна? Отлично.
Мы уже живем второй год в ситуации, когда на самом деле все однозначно.
Никто не может сказать, что он этого не знал. Или что не все так однозначно. Все понятно и все на самом деле однозначно. Мы уже живем второй год в ситуации, когда на самом деле все однозначно.
Когда сразу стало понятно, с кем разговаривать, с кем не разговаривать, с кем общаться, с кем не общаться, кто на стороне добра, кто на стороне зла. Знаете, середины никакой нет.
М.М.: Как война и нынешняя ситуация повлияла на то, как люди пишут и что они пишут. Что вы замечаете в том, что касается и тем, и форм?
Г.У.: Во-первых, многие перестали писать. Я сам тоже весь прошлый год был как заморожен. Я понимал, что надо делать издательство, но у меня не сшивалось, не складывалось. Я понимал, что надо. Но то же время находилась масса аргументов, чтобы не делать этого. Не то что аргументов, но просто издание книг — дело не сильно коммерчески выгодное. Поэтому как-то цифры не сшивались, не дружили друг с дружкой. И потом я вдруг понял, что это нужно делать не для себя, не для цифр, не для бизнеса – а для людей, которым, собственно, эти книжки могут быть большая помощь, и надоим помочь. И, например, надо издать «Спрингфилд», потому что больше у него издателя никакого нет. И я надеюсь, что появление этого издательства тоже поможет разморозиться каким-то авторам, и они смогут начать что-то интересное, смогут писать.
Но если говорить про то, что пишут: пишут много антивоенных вещей, переосмысливают нашу, жизнь, ищут в ней признаки надвигающегося краха. Но художественная литература пишется долго, а русская литература еще и долго рефлексирует. Например, события октября 1993 года – сейчас вот прошло почти 30 лет после расстрела Белого дома. Об этих событиях печальных, кровавых – а я был их непосредственным свидетелем и это до сих пор очень больно – написано всего две книги. Про1930-е годы, про ГУЛАГ продолжают писать. Я думал, что на Шаламове закончится. Нет, потом Яхина, Водолазкин, Прилепин и так далее. То есть, до сих пор рефлексируют события, считайте, столетней давности. И когда дойдет уже до художественных романов про нынешние события –сказать пока сложно. Поэтому мы будем много делать нон-фикшн литературы, исследовательской, просветительской, научно-популярной и так далее.
М.М.: И поэзия. Вы ведь публикуете поэзию?
Г.У.: Да, да. Вот про поэзию отдельно. Я написал в меморандуме, что поэзия – это «силы быстрого реагирования». И мы издаем сейчас поэтические сборники и отдельных авторов, и готовим поэтический сборник украинских поэтов коллективный. И вот вышел у нас Кабанов, вышел Пуханов, вышел Клюев, на днях выходит Демьян Кудрявцев. И это все антитоталитарная антивоенная поэзия, которая действительно нужна, и поэты способны откликаться очень быстро. И я назвал это силами быстрого реагирования. Чем обидел одного из писателей. «Что ты такое говоришь? Силы быстрого реагирования — это термин совсем из другого мира». А я вот люблю апроприировать. Я считаю, что мы можем взять из лексикона этих пропагандистов, этого режима какие-то слова или фразы – и использовать их для себя. Они им не принадлежат, им не принадлежит язык, культура, литература.
Страна – это в том числе я. Страна — это очень много людей, которые не поддерживают эту агрессию. Страна — это прекрасные врачи, прекрасные ученые и так далее. Почему эти люди смеют вообще называть себя страной? Они какая-то часть, довольно маргинальная. Я не согласен с тем, что все поддерживают эту войну. Я думаю, что войну поддерживают пятнадцать-двадцать процентов населения в лучшем случае, и то поддерживают ситуативно, для карьеры. Когда ситуация повернется, эти же люди начнут говорить: «Мы давно говорили, что надо заканчивать. Мы вообще за мир». И вот просто поддержка режима, она сейчас держится на страхе и на внушении, на такой, знаете, всеобщей массовости.
М.М.: Вы первоначально думали, что будете выпускать книги только в электронном формате. А потом решили и в бумажном?
Г.У.: У нас, у стартапов есть такое понятие: пивот. Это резкий поворот. То есть, когда люди задумали стартап на какую-то тему – и вдруг, изучив рынок, сделав первые шаги, поняли, что надо сделать какой-то поворот другой. Так вот, у меня в этом стартапе было уже несколько таких поворотов. Мы объявили о своем существовании четвертого числа, меньше месяца назад. Я сначала думал выпускать пока только электронные версии, наладить дистрибуцию и потом… Но так получилось, что я уже четыре дня назад издал первую книжку на бумаге: «Спрингфилд»
Сегодня ночью выпускаем вторую книгу на бумаге: Дубова «Меньшее зло». Завтра, видимо, выйдет роман моего любимчика, 21 год парню. Написал просто великолепную книжку с черным юмором. И вот мы ее тоже выпустим. Дальше выйдет в электронной версии книжка Демьяна Кудрявцева. Возможно, в бумаге. Все, что я сейчас назвал, это и в бумаге, и в электронке. Дальше рассказы Дмитрия Быкова выйдут и в бумаге, и в электронке одновременно. То есть мы до конца мая выпустим, наверное, двадцать одну книгу электронную и, наверное, около восьми-девяти книг бумажных.
М.М.: A как финансируется Freedom Letters?
Г.У.: А никак! Я обратился за волонтерской помощью просто через Фейсбук. Нашлось 20, уже даже больше, замечательных людей, которые взяли на себя обязанности корректора, выпускающего редактора, художника и так далее. И это похоже на такое коллективное действие. Здесь очень-очень важна не столько экономия денег, сколько коллективные действия людей, которые живут в очень многих странах мира. Мы выстроились как в живую цепочку. И друг другу помогаем, и дело общее делаем. Вот это очень здорово. Кто-то помогает в одном, в другом, кто-то третий каждый день занимается и получает удовольствие от этой работы.
Главная помощь — это покупать наши книжки. Они есть на Амазоне. Они есть на сайте издательства. Они есть в IBooks. В общем, везде наши книжки есть. По ссылкам на сайте можно заказывать бумажные версии.
Если есть какой-то бизнесмен, который понимает, что мы в России востребованы, и захочет нас поддержать, он может выкупить, например, даже не бумажных, а просто электронных экземпляров, сто или тысячу, чтобы продавать там за рубли – мы тогда соберем адреса всех желающих в России, например, купить книгу «Спрингфилд». Очень многим она нужна. И мы эти экземпляры бесплатно уже разошлем всем желающим. То есть, помогать можно разными способами. Это обычный стартап, который нуждается в спонсорах, который нуждается в донатах, который нуждается в покупке книг.
Обобщение — ГИС Вики | Энциклопедия ГИС
Обобщение понятия является расширением понятия до менее конкретных критериев, другими словами, это абстракция данных в меньшем масштабе [1] . Обобщение есть акт упрощения. Это основополагающий элемент логики и человеческого мышления. Обобщение постулирует существование домена или набора элементов, а также одной или нескольких общих характеристик, общих для этих элементов. Как таковая, она является существенной основой любого действительного дедуктивного вывода. Процесс проверки необходим, чтобы определить, верно ли обобщение для любой данной ситуации.
Успех автоматизированного обобщения зависит от перевода человеческих знаний о методах ручного обобщения в явные правила и логику, чтобы их можно было закодировать на компьютерном языке [2] . В учебниках очень мало руководств по ручному обобщению, и они обычно расплывчаты и неполны. Понятие обобщения имеет широкое применение во многих смежных дисциплинах, иногда имея особое значение, зависящее от контекста. Обобщая, вы можете консолидировать данные и отображать наиболее важную информацию.
Для любых двух связанных понятий, A и B ; А считается обобщением понятия В тогда и только тогда, когда:
- каждый экземпляр концепции B также является экземпляром концепции A; и
- существуют экземпляры понятия A, которые не являются экземплярами понятия B.
Обобщение Дерево
Например, Растение является обобщением Дерево потому что каждое дерево является растением, а есть растения которые не являются деревьями (цветы, например).
ГИС-данные в нашем современном мире очень подробны, и нам нужно обобщать, чтобы лучше понять наши ГИС-данные. Данные ГИС почти всегда слишком подробны для нашей карты. Например, если мы хотим сделать карту штата Юта, мы не собираемся помещать на карту все дороги в Юте. Важно помнить, что после того, как произошло обобщение, детали теряются. При работе с пространственными данными в ГИС эти упрощенные данные теперь менее точны в пространственном отношении. Эту потерю деталей следует учитывать при выполнении таких измерений, как длина, периметр или площадь, поскольку эти измерения теперь будут содержать некоторую погрешность. [3] Хотя обобщение в некотором смысле ограничивает, его следует рассматривать как положительный аспект ГИС. Ни один ГИС-проект не будет включать в себя все детали какой-либо конкретной области, поэтому обобщение неизбежно. Обобщение необходимо в той или иной степени на всех картах (или любом другом ГИС-проекте), чтобы оно было понятным и чтобы его тема выделялась. [4]
Содержание
- 1 Гипероним и Гипоним
- 2 Обобщение в картографии
- 3 ГИС и автоматизированное обобщение
- 3.1 Базы данных
- 4 Каталожные номера
- 5 См. также
Гипероним и гипоним
Гипероним — это термин, обобщающий класс или группу элементов с одинаковым рангом, или слово, под которое более конкретные слова подпадают категорически. Например, дерево является гипернимом для персика и дуба, , а корабль является гипернимом для крейсера 9.0014 и отпариватель . И наоборот, гипоним — это термин, который находится в отношениях типа с гипернимом. Гипоним — это слово, которое является более конкретным, чем общий термин, связанный с ним. Гипонимы, такие как клен и дуб , являются подкатегориями гипернима дерева , а крейсер и пароход являются типами гипернима корабля . Гипероним выше гипонима, а гипоним ниже гипернима. Этот вид обобщение против специализации (или конкретизация ) отражаются в зеркале противопоставления гиперонимической и гипонимной пары слов. Понимание того, как использовать и применять гиперонимы и гипонимы, может очень помочь в обобщении картографии.
Обобщение в картографии
Основная статья: Картографическое обобщение
Обобщение всегда играло важную роль в картографии. Карты не могут передать каждую деталь реального мира, поэтому картографы должны решить, какая информация необходима для передачи их сообщения. Затем они обобщают содержимое своей карты, чтобы создать продукт, который передает желаемую геопространственную информацию в рамках их представления о мире. Каждая карта была в какой-то степени обобщена, и правильно обобщенные карты — это те, которые подчеркивают наиболее важные элементы карты, но при этом представляют мир наиболее точным и узнаваемым способом.
Картографы используют карты, чтобы рассказать историю, и они должны знать свою аудиторию, как человек, который рассказывает историю своему другу. Эта история нуждается в контексте и деталях, чтобы иметь смысл, но не слишком много деталей, чтобы слушатель не запутался. Обобщение используется в картах, чтобы избавиться от ненужных деталей и не запутать зрителя.
Различные методы или операции были разработаны для удаления, улучшения и подавления картографических визуальных деталей. Эти операции включают операции с содержимым, операции с геометрией и операции с символами. Подробное объяснение каждого типа операций см. в разделе об операциях генерализации при картографической генерализации.
ГИС и автоматизированное обобщение
С появлением ГИС в прошлом веке и автоматическим ростом спроса на создание карт автоматическое обобщение стало важным вопросом для национальных картографических агентств (NMA) и других поставщиков данных. Таким образом, автоматизированное обобщение описывает автоматизированное извлечение данных (становящихся затем информацией) относительно цели и масштаба. Разные исследователи изобретали концептуальные модели для автоматизированного обобщения:
- Грюнрайх модель
- Модель Brassel & Weibel
- Модель McMaster & Shea
Помимо этих установленных моделей, были установлены различные взгляды на автоматизированное обобщение. Двумя такими представлениями являются представление, ориентированное на представление, и представление, ориентированное на процесс. Первое представление фокусируется на представлении данных в разных масштабах, что связано с областью баз данных с несколькими представлениями (MRDB). Топографические карты и навигационные карты часто ориентированы на представление. Последняя точка зрения фокусируется на процессе обобщения. Это делается путем получения подробной базы данных и уменьшения ее сложности в зависимости от размера масштаба. [5]
Базы данных
В контексте создания баз данных разного масштаба существуют две распространенные стратегии: подход «лестница» и подход «звезда».
- Лестничный подход
Лестничный подход представляет собой пошаговое обобщение, в котором каждый полученный набор данных основан на другой базе данных следующего большего масштаба. Например, если целью было прореживание деталей карты масштаба 1:250 000, картограф сначала начал бы с масштаба 1:24 000 и обобщил детали. Затем она перейдет к масштабу 1:50 000, выполняя те же операции. Это постепенное увеличение будет продолжаться до тех пор, пока картограф не удовлетворится внешним видом в конечном масштабе 1: 250 000.
- Звездный подход
Звездный подход описывает производные данные во всех масштабах на основе единой (крупномасштабной) базы данных. Картограф имеет в виду ту же цель, что и в подходе с лестницей, но вместо постепенного увеличения картограф будет использовать 1:24 000 и сразу перейти к 1:250 000 или 1:100 000 и выполнить там обобщающие операции. [6]
Ссылки
- ↑ Харди, П., Ли, Д., Обобщение на основе ГИС и множественное представление пространственных данных Труды, ISGI 2005, Международный симпозиум по обобщению информации
- ↑ Харди, П. , Ли, Д., Обобщение на основе ГИС и множественное представление пространственных данных Труды, ISGI 2005, Международный симпозиум по обобщению информации
- ↑ Демпси, Кейтлин. «Обобщение в ГИС». GIS Lounge, 30 ноября 2014 г. Интернет. https://www.gislounge.com/generalization-gis/
- ↑ Джудит А. Тайнер, Принципы дизайна карты (Нью-Йорк: Гилфорд Пресс, 2010), 82.
- ↑ Вейбель, Р. и Даттон, Г. «Обобщение пространственных данных и работа с множественными представлениями». http://www.geos.ed.ac.uk/~gisteac/gis_book_abridged/files/ch20.pdf.
- ↑ Росс, Кевин. «Лестница против звезды: сравнение двух подходов для обобщения данных гидрологических линий потока в нескольких масштабах».
- Рот Р.Э., Страйкер М., Брюэр К.А. (2003). «Типология ScaleMaster: литературный фонд», Университет Пенсильвании .
См. также
- Абстракция
- При прочих равных условиях
- Универсальный
- Общий предшественник
- наследование (объектно-ориентированное программирование),
- Неверное обобщение
- Поспешное обобщение
- С соответствующими изменениями
- -имя
- Диаграмма классов
- Алгоритм Рамера-Дугласа-Пекера
- Специализация, обратный процесс
Обобщение — supermemo.
guruОт supermemo.guru
Перейти к навигацииПерейти к поиску
Обобщение — это процесс, в котором игнорируются сбивающие с толку детали знания для получения более ясной общей картины. Обобщение способствует пониманию и рассуждениям. Это жизненно важно для человеческого интеллекта. Это неотъемлемое свойство нейронных сетей, которое проявляется даже у примитивных животных.
Например, если мы создадим сложный и подробный мысленный образ собаки. Эта картина может быстро потерять свою детализацию, и вскоре мы вспомним встречу с определенной породой, например, с собакой. золотистый ретривер. Обобщение позволяет легко преобразовать знание, богатое данными, в разреженное знание с более высокой степенью применимости.
Забывание играет жизненно важную роль в процессе обобщения . Мы продолжаем изучать факты и продолжаем забывать факты. Этот бесконечный и, казалось бы, бесполезный процесс способствует формированию моделей посредством обобщения . Вот как изучение кажущихся тривиальными фактов может способствовать развитию интеллекта.
Обобщение лежит в основе кристаллизации понятийной сети мозга: концептуализации. В концептуальной сети обобщение возникает как пересечение активаций концептуальной карты в разных контекстах. Повторная активация концептуальных связей приводит к стабилизации. Менее часто используемые ссылки подвержены забыванию.
Подробнее см.: Абстрактные знания
Эта статья глоссария используется для объяснения текстов в серии SuperMemo Guru о памяти, обучении, творчестве и решении проблем
Терминология абстрактных знаний