<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSpring%2FDecouple</id>
		<title>Java/Spring/Decouple - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FSpring%2FDecouple"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Spring/Decouple&amp;action=history"/>
		<updated>2026-04-19T08:37:52Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Spring/Decouple&amp;diff=6637&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Spring/Decouple&amp;diff=6637&amp;oldid=prev"/>
				<updated>2010-06-01T06:16:52Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:16, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/Spring/Decouple&amp;diff=6636&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/Spring/Decouple&amp;diff=6636&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:44Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Closed Coupled ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
File: Main.java&lt;br /&gt;
import java.io.PrintStream;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] a) {&lt;br /&gt;
    MessageData source = new MessageData(&amp;quot;Hello, world&amp;quot;);&lt;br /&gt;
    MessageReporter destination = new MessageReporter();&lt;br /&gt;
    destination.write(System.out, source.getMessage());&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
final class MessageData {&lt;br /&gt;
  private final String message;&lt;br /&gt;
  public MessageData(String message) {&lt;br /&gt;
    this.message = message;&lt;br /&gt;
  }&lt;br /&gt;
  public String getMessage() {&lt;br /&gt;
    return message;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class MessageReporter {&lt;br /&gt;
  public void write(PrintStream out, String message) {&lt;br /&gt;
    out.println(message);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Decouple With Interface ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
File: Main.java&lt;br /&gt;
&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] a) {&lt;br /&gt;
    MessageData source = new SimpleMessageData(&amp;quot;Hello, world&amp;quot;);&lt;br /&gt;
    MessageReporter destination = new StdoutMessageReporter();&lt;br /&gt;
    destination.write(source.getMessage());&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
interface MessageReporter {&lt;br /&gt;
  void write(String message);&lt;br /&gt;
}&lt;br /&gt;
interface MessageData {&lt;br /&gt;
  String getMessage();&lt;br /&gt;
}&lt;br /&gt;
class StdoutMessageReporter implements MessageReporter {&lt;br /&gt;
  public void write(String message) {&lt;br /&gt;
    System.out.println(message);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class SimpleMessageData implements MessageData {&lt;br /&gt;
  private final String message;&lt;br /&gt;
  public SimpleMessageData() {&lt;br /&gt;
    this(&amp;quot;Hello, world&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public SimpleMessageData(String message) {&lt;br /&gt;
    this.message = message;&lt;br /&gt;
  }&lt;br /&gt;
  public String getMessage() {&lt;br /&gt;
    return this.message;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spring Prototype ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
File: Main.java&lt;br /&gt;
import org.springframework.context.ApplicationContext;&lt;br /&gt;
import org.springframework.context.support.ClassPathXmlApplicationContext;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] z) {&lt;br /&gt;
    ApplicationContext context = new ClassPathXmlApplicationContext(&amp;quot;context.xml&amp;quot;, Main.class);&lt;br /&gt;
    SpringPrototypeClient client = (SpringPrototypeClient) context.getBean(&amp;quot;prototypeClient&amp;quot;);&lt;br /&gt;
    client.run();&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class SpringPrototypeClient {&lt;br /&gt;
  private Message message1;&lt;br /&gt;
  private Message message2;&lt;br /&gt;
  public void run() {&lt;br /&gt;
      System.out.println(&amp;quot;Message1 &amp;quot; + this.message1.toString());&lt;br /&gt;
      System.out.println(&amp;quot;Message2 &amp;quot; + this.message2.toString());&lt;br /&gt;
      System.out.println(&amp;quot;Messages == &amp;quot; + (this.message1 == this.message2));&lt;br /&gt;
  }&lt;br /&gt;
  public void setMessage1(Message message1) {&lt;br /&gt;
      this.message1 = message1;&lt;br /&gt;
  }&lt;br /&gt;
  public void setMessage2(Message message2) {&lt;br /&gt;
      this.message2 = message2;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
abstract class Message {&lt;br /&gt;
  public Message makeCopy() {&lt;br /&gt;
    try {&lt;br /&gt;
      return this.getClass().newInstance();&lt;br /&gt;
    } catch (InstantiationException e) {&lt;br /&gt;
      return null;&lt;br /&gt;
    } catch (IllegalAccessException e) {&lt;br /&gt;
      return null;&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class EmailMessage extends Message {&lt;br /&gt;
  @Override&lt;br /&gt;
  public String toString() {&lt;br /&gt;
    return &amp;quot;EmailMessage&amp;quot;;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
File: context.xml&lt;br /&gt;
&amp;lt;!DOCTYPE beans PUBLIC &amp;quot;-//SPRING//DTD BEAN//EN&amp;quot;&lt;br /&gt;
&amp;quot;http://www.springframework.org/dtd/spring-beans.dtd&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;beans&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;prototypeClient&amp;quot;&lt;br /&gt;
          class=&amp;quot;SpringPrototypeClient&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;message1&amp;quot; ref=&amp;quot;message&amp;quot;/&amp;gt;&lt;br /&gt;
        &amp;lt;property name=&amp;quot;message2&amp;quot; ref=&amp;quot;message&amp;quot;/&amp;gt;&lt;br /&gt;
    &amp;lt;/bean&amp;gt;&lt;br /&gt;
    &amp;lt;bean id=&amp;quot;message&amp;quot; class=&amp;quot;EmailMessage&amp;quot; singleton=&amp;quot;false&amp;quot;/&amp;gt;&lt;br /&gt;
&amp;lt;/beans&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Spring Style Decouple ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
       &lt;br /&gt;
File: helloworld-context.properties&lt;br /&gt;
source.(class)=SimpleMessageData&lt;br /&gt;
destination.(class)=StdoutMessageReporter&lt;br /&gt;
&lt;br /&gt;
File: Main.java&lt;br /&gt;
import org.springframework.beans.factory.support.BeanDefinitionReader;&lt;br /&gt;
import org.springframework.beans.factory.support.DefaultListableBeanFactory;&lt;br /&gt;
import org.springframework.beans.factory.support.PropertiesBeanDefinitionReader;&lt;br /&gt;
import org.springframework.core.io.ClassPathResource;&lt;br /&gt;
public class Main {&lt;br /&gt;
  public static void main(String[] a) {&lt;br /&gt;
    DefaultListableBeanFactory bf = new DefaultListableBeanFactory();&lt;br /&gt;
    BeanDefinitionReader reader = new PropertiesBeanDefinitionReader(bf);&lt;br /&gt;
    reader.loadBeanDefinitions(new ClassPathResource(&amp;quot;helloworld-context.properties&amp;quot;));&lt;br /&gt;
    MessageData source = (MessageData) bf.getBean(&amp;quot;source&amp;quot;);&lt;br /&gt;
    MessageReporter destination = (MessageReporter) bf.getBean(&amp;quot;destination&amp;quot;);&lt;br /&gt;
    destination.write(source.getMessage());&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
interface MessageService {&lt;br /&gt;
  void execute();&lt;br /&gt;
}&lt;br /&gt;
class DefaultMessageService implements MessageService {&lt;br /&gt;
  private MessageData source;&lt;br /&gt;
  private MessageReporter destination;&lt;br /&gt;
  public void execute() {&lt;br /&gt;
      this.destination.write(this.source.getMessage());&lt;br /&gt;
  }&lt;br /&gt;
  public void setSource(MessageData source) {&lt;br /&gt;
      this.source = source;&lt;br /&gt;
  }&lt;br /&gt;
  public void setDestination(MessageReporter destination) {&lt;br /&gt;
      this.destination = destination;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
interface MessageReporter {&lt;br /&gt;
  void write(String message);&lt;br /&gt;
}&lt;br /&gt;
interface MessageData {&lt;br /&gt;
  String getMessage();&lt;br /&gt;
}&lt;br /&gt;
class StdoutMessageReporter implements MessageReporter {&lt;br /&gt;
  public void write(String message) {&lt;br /&gt;
    System.out.println(message);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class SimpleMessageData implements MessageData {&lt;br /&gt;
  private final String message;&lt;br /&gt;
  public SimpleMessageData() {&lt;br /&gt;
    this(&amp;quot;Hello, world&amp;quot;);&lt;br /&gt;
  }&lt;br /&gt;
  public SimpleMessageData(String message) {&lt;br /&gt;
    this.message = message;&lt;br /&gt;
  }&lt;br /&gt;
  public String getMessage() {&lt;br /&gt;
    return this.message;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
           &lt;br /&gt;
       &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>