<?xml version="1.0" encoding="UTF-8"?><!-- generator="wordpress/2.2.1" -->
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel>
	<title>Comments on: Паттерн Прототип (Prototype Design Pattern)</title>
	<link>http://www.javenue.info/post/70</link>
	<description>Блог разработчика о Java и родственных технологиях</description>
	<pubDate>Sat, 17 May 2008 09:59:52 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.2.1</generator>

	<item>
		<title>By: Victor Conovalov</title>
		<link>http://www.javenue.info/post/70#comment-21154</link>
		<author>Victor Conovalov</author>
		<pubDate>Tue, 05 Feb 2008 12:33:21 +0000</pubDate>
		<guid>http://www.javenue.info/post/70#comment-21154</guid>
		<description>А в чем принципиальная разница между Prototype Pattern and Copy Constructor?</description>
		<content:encoded><![CDATA[<p>А в чем принципиальная разница между Prototype Pattern and Copy Constructor?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Entry_N3</title>
		<link>http://www.javenue.info/post/70#comment-20912</link>
		<author>Entry_N3</author>
		<pubDate>Sun, 27 Jan 2008 17:51:45 +0000</pubDate>
		<guid>http://www.javenue.info/post/70#comment-20912</guid>
		<description>Я хотел показать, что было бы круто копировать так же просто другие объекты, как массивы в моем примере.</description>
		<content:encoded><![CDATA[<p>Я хотел показать, что было бы круто копировать так же просто другие объекты, как массивы в моем примере.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: c0nst</title>
		<link>http://www.javenue.info/post/70#comment-20906</link>
		<author>c0nst</author>
		<pubDate>Sun, 27 Jan 2008 10:43:27 +0000</pubDate>
		<guid>http://www.javenue.info/post/70#comment-20906</guid>
		<description>Не очень понимаю. Все нормально клонируется
Результат твоего примера будет - 9,8,7,9,8,7.</description>
		<content:encoded><![CDATA[<p>Не очень понимаю. Все нормально клонируется<br />
Результат твоего примера будет - 9,8,7,9,8,7.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Entry_N3</title>
		<link>http://www.javenue.info/post/70#comment-20903</link>
		<author>Entry_N3</author>
		<pubDate>Sun, 27 Jan 2008 08:21:07 +0000</pubDate>
		<guid>http://www.javenue.info/post/70#comment-20903</guid>
		<description>Упал в том смысле, что нельзя просто написать "скопируй мне вот этот объект", например, как с массивами:

int arrBasic[] = new int[3];
arrBasic[0] = 9; arrBasic[1] = 8; arrBasic[2] = 7;

for(int j=0; j &#60; arrBasic.length; j++){
   System.out.println(arrBasic[j]);
}

int arrClone[] = arrBasic.clone();

for(int j=0; j &#60; arrClone.length; j++){
   System.out.println(arrClone[j]);
}

(хотя не отрицаю в данном случае, что массив это объект, но этот
пример не подчиняется правилу индукции на все остальные объекты)</description>
		<content:encoded><![CDATA[<p>Упал в том смысле, что нельзя просто написать &#8220;скопируй мне вот этот объект&#8221;, например, как с массивами:</p>
<p>int arrBasic[] = new int[3];<br />
arrBasic[0] = 9; arrBasic[1] = 8; arrBasic[2] = 7;</p>
<p>for(int j=0; j &lt; arrBasic.length; j++){<br />
   System.out.println(arrBasic[j]);<br />
}</p>
<p>int arrClone[] = arrBasic.clone();</p>
<p>for(int j=0; j &lt; arrClone.length; j++){<br />
   System.out.println(arrClone[j]);<br />
}</p>
<p>(хотя не отрицаю в данном случае, что массив это объект, но этот<br />
пример не подчиняется правилу индукции на все остальные объекты)</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: c0nst</title>
		<link>http://www.javenue.info/post/70#comment-20894</link>
		<author>c0nst</author>
		<pubDate>Sat, 26 Jan 2008 14:39:15 +0000</pubDate>
		<guid>http://www.javenue.info/post/70#comment-20894</guid>
		<description>Создать объект можно еще с помощью оператора new или с помощью reflection (опять же через вызов конструктора).
А почему интерес упал?</description>
		<content:encoded><![CDATA[<p>Создать объект можно еще с помощью оператора new или с помощью reflection (опять же через вызов конструктора).<br />
А почему интерес упал?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Entry_N3</title>
		<link>http://www.javenue.info/post/70#comment-20889</link>
		<author>Entry_N3</author>
		<pubDate>Sat, 26 Jan 2008 10:33:11 +0000</pubDate>
		<guid>http://www.javenue.info/post/70#comment-20889</guid>
		<description>Всегда интересовался вопросом клонирования объектов. Но упал интерес к данному вопросу, когда узнал, что классы этих объектов должны реализовывать метод clone(), а других возможностей нет. Это так?</description>
		<content:encoded><![CDATA[<p>Всегда интересовался вопросом клонирования объектов. Но упал интерес к данному вопросу, когда узнал, что классы этих объектов должны реализовывать метод clone(), а других возможностей нет. Это так?</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: c0nst</title>
		<link>http://www.javenue.info/post/70#comment-20778</link>
		<author>c0nst</author>
		<pubDate>Mon, 21 Jan 2008 08:52:35 +0000</pubDate>
		<guid>http://www.javenue.info/post/70#comment-20778</guid>
		<description>Спасибо за комментарий.
Постараюсь ответить на ваши вопросы.
1) Прототип может использоваться и в том случае, если создание нового объекта нетривиально для пользователя. Например, в конструкторе много параметров. Или автор класса не хочет, чтобы пользователь создавал класс через new, но конструктор нельзя делать приватным для поддержки reflection. Всякое бывает...
2) Суть примера как раз и описана в моем предыдущем ответе. ComplicatedObject в примере - это какой-то сложный объект, возможно со сложной древовидной структурой. Время его создания может быть и небольшим, но потребует много вызовов для пользователя. Например - для создания копии сильноветвящегося DOM документа вряд ли кто-то создаст новый документ и подобавляет в него элементы и текстовые ноды. Скорее сделают импорт корневой ноды в другой документ.

Насколько я понял, пример не очень прозрачный. В ближайшее время додумаю его. Еще раз спасибо.</description>
		<content:encoded><![CDATA[<p>Спасибо за комментарий.<br />
Постараюсь ответить на ваши вопросы.<br />
1) Прототип может использоваться и в том случае, если создание нового объекта нетривиально для пользователя. Например, в конструкторе много параметров. Или автор класса не хочет, чтобы пользователь создавал класс через new, но конструктор нельзя делать приватным для поддержки reflection. Всякое бывает&#8230;<br />
2) Суть примера как раз и описана в моем предыдущем ответе. ComplicatedObject в примере - это какой-то сложный объект, возможно со сложной древовидной структурой. Время его создания может быть и небольшим, но потребует много вызовов для пользователя. Например - для создания копии сильноветвящегося DOM документа вряд ли кто-то создаст новый документ и подобавляет в него элементы и текстовые ноды. Скорее сделают импорт корневой ноды в другой документ.</p>
<p>Насколько я понял, пример не очень прозрачный. В ближайшее время додумаю его. Еще раз спасибо.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: svetliy</title>
		<link>http://www.javenue.info/post/70#comment-20776</link>
		<author>svetliy</author>
		<pubDate>Mon, 21 Jan 2008 08:20:21 +0000</pubDate>
		<guid>http://www.javenue.info/post/70#comment-20776</guid>
		<description>Как-то не очень раскрыта суть паттерна. 
1)если создание объектов (через оператор new) занимает длительный промежуток времени или требовательно к памяти;
как это понять если все равно в clone создается новый объект (вызов  return new ComplicatedObject();)
2) Но рассмотрим отличный от клонирования вариант:
и в чем суть этого отличного от клонирования варианта 

Я понимаю так суть паттерна прототип:
если нам необходимо получить клон(полную независимую копию экземпляра класса, где значения полей (атрибутов)совпадают с исходным, но имеют разные ссылки) объекта, то необходимо реализовать интерфейс Clonable. Метод clone класса Object просто производит копирование.</description>
		<content:encoded><![CDATA[<p>Как-то не очень раскрыта суть паттерна.<br />
1)если создание объектов (через оператор new) занимает длительный промежуток времени или требовательно к памяти;<br />
как это понять если все равно в clone создается новый объект (вызов  return new ComplicatedObject();)<br />
2) Но рассмотрим отличный от клонирования вариант:<br />
и в чем суть этого отличного от клонирования варианта </p>
<p>Я понимаю так суть паттерна прототип:<br />
если нам необходимо получить клон(полную независимую копию экземпляра класса, где значения полей (атрибутов)совпадают с исходным, но имеют разные ссылки) объекта, то необходимо реализовать интерфейс Clonable. Метод clone класса Object просто производит копирование.</p>
]]></content:encoded>
	</item>
</channel>
</rss>
