<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
	<channel>
		<title><![CDATA[Форум ReadyScript &mdash; Расширение функционала путем наследования и инверсия управления]]></title>
		<link>https://forum.readyscript.ru/topic/816/rasshirenie-funktsionala-putem-nasledovaniya-i-inversiya-upravleniya/</link>
		<atom:link href="https://forum.readyscript.ru/feed/rss/topic/816/" rel="self" type="application/rss+xml" />
		<description><![CDATA[Недавние сообщения в теме «Расширение функционала путем наследования и инверсия управления».]]></description>
		<lastBuildDate>Thu, 01 Sep 2016 23:32:47 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[Re: Расширение функционала путем наследования и инверсия управления]]></title>
			<link>https://forum.readyscript.ru/post/4433/#p4433</link>
			<description><![CDATA[<p>DI (Dependency Injection) - довольно удобная вещь, но на статически расширяемых фреймворках. Где расширение происходит программистом, путем прописывания нового модуля вручную в конфиг и где полный набор модулей заранее известен разработчику, таким образом он всегда знает, кто перегружает тот или иной класс, опираясь на свой же конфиг.</p><p>Наша же архитектура - динамически расширяема. ReadyScript у всех пользователей работает с разным набором модулей, которые привносятся в систему в разном порядке. Иными словами вы в своем модуле никогда не будете знать кто сейчас перегрузил класс, который вы хотите использовать, модуль &quot;a&quot; или модуль &quot;b&quot;, а может есть какой-то модуль &quot;d&quot;, который это делает. Тем самым в динамических платформах - это способно внести определенный хаос в работу системы и в стабильность работы системы. </p><p>Вы можете ожидать, что установили свой модуль и перегрузили какой-то класс, а на самом деле Пользователь установил затем другой модуль, который тоже перегрузил этот же класс, в итоге вы будете обращаться к несуществующим методам.</p><p>У нас вместо этого реализовано огромное множество альтернативных приемов перегрузки и расширения стандартной функциональности. Можем, например, обсудить какую задачу вы не смогли решить, думаю подскажем какое решение можно применить.</p>]]></description>
			<author><![CDATA[null@example.com (admin)]]></author>
			<pubDate>Thu, 01 Sep 2016 23:32:47 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/4433/#p4433</guid>
		</item>
		<item>
			<title><![CDATA[Расширение функционала путем наследования и инверсия управления]]></title>
			<link>https://forum.readyscript.ru/post/4103/#p4103</link>
			<description><![CDATA[<p>Для изменения и дополнения классов используется наследование, однако здесь его применить не удается. Если я создам наследника какого-то класса, то остальные классы системы об этом не узнают, и будут продолжать использовать оригинальный класс. Проблемы можно избежать, если методы будут манипулировать не конкретными классами, а интерфейсами, а объекты будут создаваться не по месту использования с указанием конкретного класса, а при помощи некого настраиваемого программного механизма, и можно будет указать, какой класс для реализации какого интерфейса использовать.<br />По ссылкам более детально о том, что я имею в виду:<br /><a href="https://ru.wikipedia.org/wiki/%D0%98%D0%BD%D0%B2%D0%B5%D1%80%D1%81%D0%B8%D1%8F_%D1%83%D0%BF%D1%80%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D1%8F">https://ru.wikipedia.org/wiki/%D0%98%D0 … 0%B8%D1%8F</a><br /><a href="https://habrahabr.ru/post/132084/">https://habrahabr.ru/post/132084/</a></p>]]></description>
			<author><![CDATA[null@example.com (karpen)]]></author>
			<pubDate>Sun, 24 Jul 2016 08:48:54 +0000</pubDate>
			<guid>https://forum.readyscript.ru/post/4103/#p4103</guid>
		</item>
	</channel>
</rss>
