<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=DesignPatternSmalltalkCompanion%3A1.1</id>
	<title>DesignPatternSmalltalkCompanion:1.1 - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://trans.onionmixer.net/wiki/index.php?action=history&amp;feed=atom&amp;title=DesignPatternSmalltalkCompanion%3A1.1"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=DesignPatternSmalltalkCompanion:1.1&amp;action=history"/>
	<updated>2026-05-01T18:56:52Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.3</generator>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=DesignPatternSmalltalkCompanion:1.1&amp;diff=5573&amp;oldid=prev</id>
		<title>Onionmixer: 검수 20180719</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=DesignPatternSmalltalkCompanion:1.1&amp;diff=5573&amp;oldid=prev"/>
		<updated>2018-07-19T12:28:31Z</updated>

		<summary type="html">&lt;p&gt;검수 20180719&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:28, 19 July 2018&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===1.1 왜 디자인 패턴인가?===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===1.1 왜 디자인 패턴인가?===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;전통적 절차적 스타일과 같은 다른 패러다임으로 프로그래밍한 후 객체지향 언어를 학습하기란 힘들다. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;스몰토크로 &lt;/del&gt;애플리케이션을 만들고 구성하는 방법을 학습하려면 새로운 기술과 문제에 관한 새로운 사고방식들이 필요하다 (예: Rosson &amp;amp; Carroll, 1990; Singley, Carroll, &amp;amp; Alpert, 1991). &quot;Smalltalk Mountain&quot;의 학습 곡선을 오르는 것은 확실히 중요하다. 단순한 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;스몰토크 &lt;/del&gt;애플리케이션을 구축하는 것에 익숙해지는 안정기에 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;접어 들고 나면 &lt;/del&gt;전문가의 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;고지까지 엄청나게 떨어져있기 &lt;/del&gt;때문이다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;전통적 절차적 스타일과 같은 다른 패러다임으로 프로그래밍한 후 객체지향 언어를 학습하기란 힘들다. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Smalltalk 로 &lt;/ins&gt;애플리케이션을 만들고 구성하는 방법을 학습하려면 새로운 기술과 문제에 관한 새로운 사고방식들이 필요하다 (예: Rosson &amp;amp; Carroll, 1990; Singley, Carroll, &amp;amp; Alpert, 1991). &quot;Smalltalk Mountain&quot; 의 학습 곡선을 오르는 것은 확실히 중요하다. 단순한 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Smalltalk &lt;/ins&gt;애플리케이션을 구축하는 것에 익숙해지는 안정기에 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;도달했다고 해도, 여전히 &lt;/ins&gt;전문가의 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;고지까지는 꽤 거리가 있기 &lt;/ins&gt;때문이다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;스몰토크 &lt;/del&gt;전문가들은 다양한 추상화 수준에서 넓은 프로그래밍 스펙트럼과 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;디자인 &lt;/del&gt;지식 및 기술에 이르기까지 초보자가 알지 못하는 것들을 많이 알고 있다.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Smalltalk &lt;/ins&gt;전문가들은 다양한 추상화 수준에서&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/ins&gt;넓은 프로그래밍 스펙트럼과&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, 설계 &lt;/ins&gt;지식 및 기술에 이르기까지 초보자가 알지 못하는 것들을 많이 알고 있다.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 스몰토크 언어의 구문과 의미론에 관한 저수준의 상세내용&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 스몰토크 언어의 구문과 의미론에 관한 저수준의 상세내용&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 기존의 기반 클래스 라이브러리에 클래스, 메서드, 기능성 형태에서 이용할 수 있는 것&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 기존의 기반 클래스 라이브러리에 클래스, 메서드, 기능성 형태에서 이용할 수 있는 것&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 새로 발생한 문제에 대해 기존 기능성을 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;검색하여 &lt;/del&gt;재사용하기 위해 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;스몰토크 &lt;/del&gt;대화형 개발환경에서 특정 도구를 사용하는 방법 뿐 아니라 프로그램을 정적 관점과 런타임 관점에서 이해하는 방법&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 새로 발생한 문제에 대해 기존 기능성을 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;검색하고 &lt;/ins&gt;재사용하기 위해&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, Smalltalk &lt;/ins&gt;대화형 개발환경에서 특정 도구를 사용하는 방법 뿐 아니라 프로그램을 정적&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;sup&amp;gt;static&amp;lt;/sup&amp;gt; &lt;/ins&gt;관점과 런타임&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;sup&amp;gt;runtime&amp;lt;/sup&amp;gt; &lt;/ins&gt;관점에서 이해하는 방법&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 새로운 클래스에서 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;행위를 &lt;/del&gt;정의하고 구현하는 방법, 그리고 이 클래스가 기존 클래스 계층구조 중 어디에 위치해야 하는지&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 새로운 클래스에서 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;행위&amp;lt;sup&amp;gt;behaivior&amp;lt;/sup&amp;gt;를 &lt;/ins&gt;정의하고 구현하는 방법, 그리고 이 클래스가 기존 클래스 계층구조 중 어디에 위치해야 하는지&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 어떠한 클래스가 프레임워크로서 잘 작동하는지 여부&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 어떠한 클래스가 프레임워크로서 잘 작동하는지 여부&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 객체 구성과 상호작용의 반복 (되풀이되는) 패턴, 그리고 협력하는 객체들이 (최소한 일부라도) 해법을 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;제공하는 &lt;/del&gt;문제의 종류&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 객체 구성과 상호작용의 반복 (되풀이되는) 패턴, 그리고 협력하는 객체들이 (최소한 일부라도) 해법을 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;제시하는 &lt;/ins&gt;문제의 종류&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;위의 목록은 절대 완벽하다고 할 수 없으며 대부분은 초보자들도 이해하고 이용할 수 있다. 하지만 몇 개의 항목, 특히 마지막 항목은ㅡ소프트웨어 설계에서 반복되는 패턴 또는 디자인 패턴ㅡ디자인 전문가 분야이다. &lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;디자인 &lt;/del&gt;패턴은 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;특정 되풀이되는 클래스 문제를 해결하는데 적용할 &lt;/del&gt;수 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;있는 재사용이 가능한 구현 모델 또는 아키텍처다&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;패턴은 때때로 하나의 클래스 &lt;/del&gt;또는 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;클래스의 계층구조가 어떻게 함께 작용하는지를 설명한다; 그리고 대부분의 경우는 다수의 클래스와 그 인스턴스가 어떻게 공동으로 작업하는지를 보여준다. 전문가는 새로운 애플리케이션 특정적 문제와 도메인 특정적 문제에 대해 일반적인 패턴 형태를 재적용하고 수정(customize)하기 때문에 특정 아키텍처가 여러 애플리케이션과 시스템에서 다시 나타나는 것으로 밝혀졌다. 따라서 전문가들은 근사하고 확장이 가능한 해법을 실행하기 위해서 새로운 문제에 대해 &lt;/del&gt;디자인 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;패턴을 어떻게 적용시키는지 알고 있다&lt;/del&gt;.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;위의 목록은 절대 완벽하다고 할 수 없으며, 대부분의 &lt;/ins&gt;패턴은 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;초보자들도 이해하고 이용할 &lt;/ins&gt;수 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;있다&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;하지만 몇 개의 항목, 특히 마지막 항목은ㅡ소프트웨어 설계에서 반복되는 패턴 &lt;/ins&gt;또는 디자인 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;패턴ㅡ설계 전문가 분야에 대한 것이다&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;일반적으로 설계자들은ㅡ딱히 소프트웨어 분야 뿐만 아니라 많은 분야에서ㅡ과거의 문제와 해법에 대한 경험을 새로 직면하게 된 비슷한 &lt;/del&gt;문제에 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;적용한다. Duego와 Benson &lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;1996&lt;/del&gt;)&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;이 지적한 바와 같이&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;전문 설계자들은 인지 심리학과 인공 지능에서 사례 기반의 추론이라 알려진 것을 적용시켜 과거의 사례를 기억해내어 그를 통해 배운 것을 적용한다&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;이것은 체스 마스터&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;의사, 변호사, 건축가가 &lt;/del&gt;새로운 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;문제를 해결하는데 사용하는 추론과 같은 종류이다. 현재 &lt;/del&gt;디자인 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;패턴은 소프트웨어 설계자들이 다른 설계자들의 경험으로부터 학습하고 이를 적용시키기도 한다. 다른 분야에서와 마찬가지로 입증된 패턴에 대한 문헌이 생겨나고 &lt;/del&gt;있다&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;. 따라서 우리는 전문가 경지로 더 가까이 가기 위해 &quot;다른 이들의 업적을 이용해 발전할 수 있다&quot;&quot; (p. 32)&lt;/del&gt;.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;디자인 패턴&#039;&#039;&#039;은 자주 반복되는 클래스 문제를 해결하는데 적용할 수 있는, 재사용 가능한 구현 모델 또는 구조라고 할 수 있다. 패턴은 때때로 하나의 클래스 또는 클래스의 계층구조가 어떻게 함께 작용하는지를 설명한다. 그리고 대부분의 경우는 다수의 클래스와 그 인스턴스가 어떻게 공동으로 작업하는지를 보여준다. 전문가는 새로운 애플리케이션 특정적 문제&amp;lt;sup&amp;gt;domain-specific&amp;lt;/sup&amp;gt;와 도메인 특정적 &lt;/ins&gt;문제에 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;대해 일반적인 패턴 형태를 재적용하고 수정&lt;/ins&gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;customize&lt;/ins&gt;)&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;하기 때문에&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;특정한 구조가 여러 애플리케이션과 시스템에서 다시 나타나는 것으로 밝혀졌다&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;그렇기 때문에 전문가들은 근사하며&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;확장이 가능한 해법을 사용하기 위해서 &lt;/ins&gt;새로운 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;문제에 직면했을때 &lt;/ins&gt;디자인 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;패턴을 어떻게 적용시켜야 하는지 알고 &lt;/ins&gt;있다.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;디자인 패턴&#039;&#039;&#039;은 새로운 디자인을 설명하고 기존 패턴을 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;회고적으로 &lt;/del&gt;설명하는 짧은 단어집도 제공한다. 패턴은 세부 사항으로 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;뛰어들기 &lt;/del&gt;전에 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;디자인을 고수준에서 &lt;/del&gt;이해하도록 해준다. 또한 객체와 클래스의 전체적 구성을 커다란 입자로 상상하도록 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;하여 &lt;/del&gt;다른 설계자들이 이러한 구성에 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;붙여진 &lt;/del&gt;이름을 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;이용해 &lt;/del&gt;의사소통을 할 수 있도록 해준다. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;우리는 &lt;/del&gt;&quot;데이터베이스 접근 클래스에 하나의 인스턴스만 가지도록 한다. 클래스에는 단일 인스턴스를 추적하도록 하나의 클래스 변수만 포함해야 한다. 클래스는 전반적으로 이용할 수 있지만 그에 대한 접근을 통제하는 인스턴스를 만들어야 한다. 클래스는 인스턴스 생성 시기를 조절할 수 있어야 하며…&quot;라고 말하기보다는 &quot;데이터베이스 접근 객체를 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Singleton으로 &lt;/del&gt;구현하자&quot;고 말할 수 있는 것이다. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;당신은 어느 편이 &lt;/del&gt;더 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;좋은가&lt;/del&gt;?&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;일반적으로 설계자들은ㅡ딱히 소프트웨어 분야 뿐만 아니라 많은 분야에서ㅡ과거의 문제와 해법에 대한 경험을 새로 직면하게 된 비슷한 문제에 적용한다. Duego와 Benson (1996)이 지적한 바와 같이, 전문 설계자들은 인지 심리학과 인공 지능에서 사례 기반의 추론이라 알려진 것을 적용시켜 과거의 사례를 기억해내고, 사계를 통해 배운 것을 적용한다. 이것은 체스 마스터, 의사, 변호사, 건축가들이 새로운 문제를 해결하는데 사용하는 추론방법과 같다. 현재의 디자인 패턴은 소프트웨어 설계자들이 다른 설계자들의 경험으로부터 학습을 하며, 이를 적용시키기도 한다. 그리고 다른 분야에서와 마찬가지로 입증된 패턴에 대한 문헌이 생겨나고 있다. 따라서 우리는 전문가 수준으로 더 가까이 가기 위해 &quot;다른 이들의 업적을 이용해 발전할 수 있다&quot;&quot; (p. 32).&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&#039;&#039;&#039;디자인 패턴&#039;&#039;&#039;은 새로운 디자인을 설명하고 기존 패턴을 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;돌아보며 &lt;/ins&gt;설명하는 짧은 단어집도 제공한다. 패턴은 세부 사항으로 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;진입하기 &lt;/ins&gt;전에 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;소프트웨어 설계를 높은 수준에서 &lt;/ins&gt;이해하도록 해준다. 또한 객체와 클래스의 전체적 구성을 커다란 입자로 상상하도록 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;하며, &lt;/ins&gt;다른 설계자들이 이러한 구성에 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;붙인 &lt;/ins&gt;이름을 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;이용해서 &lt;/ins&gt;의사소통을 할 수 있도록 해준다. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;디자인 패턴의 사용자는 &lt;/ins&gt;&quot;데이터베이스 접근 클래스에 하나의 인스턴스만 가지도록 한다. 클래스에는 단일 인스턴스를 추적하도록 하나의 클래스 변수만 포함해야 한다. 클래스는 전반적으로 이용할 수 있지만 그에 대한 접근을 통제하는 인스턴스를 만들어야 한다. 클래스는 인스턴스 생성 시기를 조절할 수 있어야 하며…&quot; 라고 말하기보다는&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;, 디자인 패턴을 이용해서 &lt;/ins&gt;&quot;데이터베이스 접근 객체를 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Singleton 으로 &lt;/ins&gt;구현하자&quot; 고 말할 수 있는 것이다. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;당신에게는 어느쪽이 &lt;/ins&gt;더 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;좋게 느껴질까&lt;/ins&gt;?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:DesignPatternSmalltalkCompanion]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:DesignPatternSmalltalkCompanion]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=DesignPatternSmalltalkCompanion:1.1&amp;diff=417&amp;oldid=prev</id>
		<title>Onionmixer: 사소한 수정</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=DesignPatternSmalltalkCompanion:1.1&amp;diff=417&amp;oldid=prev"/>
		<updated>2013-01-08T10:13:25Z</updated>

		<summary type="html">&lt;p&gt;사소한 수정&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 10:13, 8 January 2013&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===1.1 왜 디자인 패턴인가?===&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;===1.1 왜 디자인 패턴인가?===&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;전통적 절차적 스타일과 같은 다른 패러다임으로 프로그래밍한 후 객체지향 언어를 학습하기란 힘들다. 스몰토크로 애플리케이션을 만들고 구성하는 방법을 학습하려면 새로운 기술과 문제에 관한 새로운 사고방식들이 필요하다 (예: Rosson &amp;amp; Carroll, 1990; Singley, Carroll, &amp;amp; Alpert, 1991). &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;“Smalltalk Mountain”의 &lt;/del&gt;학습 곡선을 오르는 것은 확실히 중요하다. 단순한 스몰토크 애플리케이션을 구축하는 것에 익숙해지는 안정기에 접어 들고 나면 전문가의 고지까지 엄청나게 떨어져있기 때문이다.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;전통적 절차적 스타일과 같은 다른 패러다임으로 프로그래밍한 후 객체지향 언어를 학습하기란 힘들다. 스몰토크로 애플리케이션을 만들고 구성하는 방법을 학습하려면 새로운 기술과 문제에 관한 새로운 사고방식들이 필요하다 (예: Rosson &amp;amp; Carroll, 1990; Singley, Carroll, &amp;amp; Alpert, 1991). &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;Smalltalk Mountain&quot;의 &lt;/ins&gt;학습 곡선을 오르는 것은 확실히 중요하다. 단순한 스몰토크 애플리케이션을 구축하는 것에 익숙해지는 안정기에 접어 들고 나면 전문가의 고지까지 엄청나게 떨어져있기 때문이다.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;스몰토크 전문가들은 다양한 추상화 수준에서 넓은 프로그래밍 스펙트럼과 디자인 지식 및 기술에 이르기까지 초보자가 알지 못하는 것들을 많이 알고 있다.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;스몰토크 전문가들은 다양한 추상화 수준에서 넓은 프로그래밍 스펙트럼과 디자인 지식 및 기술에 이르기까지 초보자가 알지 못하는 것들을 많이 알고 있다.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 스몰토크 언어의 구문과 의미론에 관한 저수준의 상세내용&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 스몰토크 언어의 구문과 의미론에 관한 저수준의 상세내용&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 기존의 기반 클래스 라이브러리에 클래스, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;메소드&lt;/del&gt;, 기능성 형태에서 이용할 수 있는 것&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 기존의 기반 클래스 라이브러리에 클래스, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;메서드&lt;/ins&gt;, 기능성 형태에서 이용할 수 있는 것&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 새로 발생한 문제에 대해 기존 기능성을 검색하여 재사용하기 위해 스몰토크 대화형 개발환경에서 특정 도구를 사용하는 방법 뿐 아니라 프로그램을 정적 관점과 런타임 관점에서 이해하는 방법&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 새로 발생한 문제에 대해 기존 기능성을 검색하여 재사용하기 위해 스몰토크 대화형 개발환경에서 특정 도구를 사용하는 방법 뿐 아니라 프로그램을 정적 관점과 런타임 관점에서 이해하는 방법&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 새로운 클래스에서 행위를 정의하고 구현하는 방법, 그리고 이 클래스가 기존 클래스 계층구조 중 어디에 위치해야 하는지&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;* 새로운 클래스에서 행위를 정의하고 구현하는 방법, 그리고 이 클래스가 기존 클래스 계층구조 중 어디에 위치해야 하는지&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l16&quot;&gt;Line 16:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 16:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;디자인 패턴은 특정 되풀이되는 클래스 문제를 해결하는데 적용할 수 있는 재사용이 가능한 구현 모델 또는 아키텍처다. 패턴은 때때로 하나의 클래스 또는 클래스의 계층구조가 어떻게 함께 작용하는지를 설명한다; 그리고 대부분의 경우는 다수의 클래스와 그 인스턴스가 어떻게 공동으로 작업하는지를 보여준다. 전문가는 새로운 애플리케이션 특정적 문제와 도메인 특정적 문제에 대해 일반적인 패턴 형태를 재적용하고 수정(customize)하기 때문에 특정 아키텍처가 여러 애플리케이션과 시스템에서 다시 나타나는 것으로 밝혀졌다. 따라서 전문가들은 근사하고 확장이 가능한 해법을 실행하기 위해서 새로운 문제에 대해 디자인 패턴을 어떻게 적용시키는지 알고 있다.  &lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;디자인 패턴은 특정 되풀이되는 클래스 문제를 해결하는데 적용할 수 있는 재사용이 가능한 구현 모델 또는 아키텍처다. 패턴은 때때로 하나의 클래스 또는 클래스의 계층구조가 어떻게 함께 작용하는지를 설명한다; 그리고 대부분의 경우는 다수의 클래스와 그 인스턴스가 어떻게 공동으로 작업하는지를 보여준다. 전문가는 새로운 애플리케이션 특정적 문제와 도메인 특정적 문제에 대해 일반적인 패턴 형태를 재적용하고 수정(customize)하기 때문에 특정 아키텍처가 여러 애플리케이션과 시스템에서 다시 나타나는 것으로 밝혀졌다. 따라서 전문가들은 근사하고 확장이 가능한 해법을 실행하기 위해서 새로운 문제에 대해 디자인 패턴을 어떻게 적용시키는지 알고 있다.  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;일반적으로 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;설계자들은ㅡ비단 &lt;/del&gt;소프트웨어 분야 뿐만 아니라 많은 분야에서ㅡ과거의 문제와 해법에 대한 경험을 새로 직면하게 된 비슷한 문제에 적용한다. Duego와 Benson (1996)이 지적한 바와 같이, 전문 설계자들은 인지 심리학과 인공 지능에서 사례 기반의 추론이라 알려진 것을 적용시켜 과거의 사례를 기억해내어 그를 통해 배운 것을 적용한다. 이것은 체스 마스터, 의사, 변호사, 건축가가 새로운 문제를 해결하는데 사용하는 추론과 같은 종류이다. 현재 디자인 패턴은 소프트웨어 설계자들이 다른 설계자들의 경험으로부터 학습하고 이를 적용시키기도 한다. 다른 분야에서와 마찬가지로 입증된 패턴에 대한 문헌이 생겨나고 있다. 따라서 우리는 전문가 경지로 더 가까이 가기 위해 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;“다른 &lt;/del&gt;이들의 업적을 이용해 발전할 수 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;있다” &lt;/del&gt;(p. 32).&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;일반적으로 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;설계자들은ㅡ딱히 &lt;/ins&gt;소프트웨어 분야 뿐만 아니라 많은 분야에서ㅡ과거의 문제와 해법에 대한 경험을 새로 직면하게 된 비슷한 문제에 적용한다. Duego와 Benson (1996)이 지적한 바와 같이, 전문 설계자들은 인지 심리학과 인공 지능에서 사례 기반의 추론이라 알려진 것을 적용시켜 과거의 사례를 기억해내어 그를 통해 배운 것을 적용한다. 이것은 체스 마스터, 의사, 변호사, 건축가가 새로운 문제를 해결하는데 사용하는 추론과 같은 종류이다. 현재 디자인 패턴은 소프트웨어 설계자들이 다른 설계자들의 경험으로부터 학습하고 이를 적용시키기도 한다. 다른 분야에서와 마찬가지로 입증된 패턴에 대한 문헌이 생겨나고 있다. 따라서 우리는 전문가 경지로 더 가까이 가기 위해 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;다른 &lt;/ins&gt;이들의 업적을 이용해 발전할 수 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;있다&quot;&quot; &lt;/ins&gt;(p. 32).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt; &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;디자인 패턴&#039;&#039;&#039;은 새로운 디자인을 설명하고 기존 패턴을 회고적으로 설명하는 짧은 단어집도 제공한다. 패턴은 세부 사항으로 뛰어들기 전에 디자인을 고수준에서 이해하도록 해준다. 또한 객체와 클래스의 전체적 구성을 커다란 입자로 상상하도록 하여 다른 설계자들이 이러한 구성에 붙여진 이름을 이용해 의사소통을 할 수 있도록 해준다. 우리는 &quot;데이터베이스 접근 클래스에 하나의 인스턴스만 가지도록 한다. 클래스에는 단일 인스턴스를 추적하도록 하나의 클래스 변수만 포함해야 한다. 클래스는 전반적으로 이용할 수 있지만 그에 대한 접근을 통제하는 인스턴스를 만들어야 한다. 클래스는 인스턴스 생성 시기를 조절할 수 있어야 하며…&quot;라고 말하기보다는 &quot;데이터베이스 접근 객체를 Singleton으로 구현하자&quot;고 말할 수 있는 것이다. 당신은 어느 편이 더 좋은가?&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;&#039;&#039;디자인 패턴&#039;&#039;&#039;은 새로운 디자인을 설명하고 기존 패턴을 회고적으로 설명하는 짧은 단어집도 제공한다. 패턴은 세부 사항으로 뛰어들기 전에 디자인을 고수준에서 이해하도록 해준다. 또한 객체와 클래스의 전체적 구성을 커다란 입자로 상상하도록 하여 다른 설계자들이 이러한 구성에 붙여진 이름을 이용해 의사소통을 할 수 있도록 해준다. 우리는 “데이터베이스 접근 클래스에 하나의 인스턴스만 가지도록 한다. 클래스에는 단일 인스턴스를 추적하도록 하나의 클래스 변수만 포함해야 한다. 클래스는 전반적으로 이용할 수 있지만 그에 대한 접근을 통제하는 인스턴스를 만들어야 한다. 클래스는 인스턴스 생성 시기를 조절할 수 있어야 하며…”라고 말하기보다는 “데이터베이스 접근 객체를 Singleton으로 구현하자”고 말할 수 있는 것이다. 당신은 어느 편이 더 좋은가?&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:DesignPatternSmalltalkCompanion]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Category:DesignPatternSmalltalkCompanion]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=DesignPatternSmalltalkCompanion:1.1&amp;diff=416&amp;oldid=prev</id>
		<title>Onionmixer at 12:34, 26 July 2012</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=DesignPatternSmalltalkCompanion:1.1&amp;diff=416&amp;oldid=prev"/>
		<updated>2012-07-26T12:34:00Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:34, 26 July 2012&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l19&quot;&gt;Line 19:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 19:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;디자인 패턴&amp;#039;&amp;#039;&amp;#039;은 새로운 디자인을 설명하고 기존 패턴을 회고적으로 설명하는 짧은 단어집도 제공한다. 패턴은 세부 사항으로 뛰어들기 전에 디자인을 고수준에서 이해하도록 해준다. 또한 객체와 클래스의 전체적 구성을 커다란 입자로 상상하도록 하여 다른 설계자들이 이러한 구성에 붙여진 이름을 이용해 의사소통을 할 수 있도록 해준다. 우리는 “데이터베이스 접근 클래스에 하나의 인스턴스만 가지도록 한다. 클래스에는 단일 인스턴스를 추적하도록 하나의 클래스 변수만 포함해야 한다. 클래스는 전반적으로 이용할 수 있지만 그에 대한 접근을 통제하는 인스턴스를 만들어야 한다. 클래스는 인스턴스 생성 시기를 조절할 수 있어야 하며…”라고 말하기보다는 “데이터베이스 접근 객체를 Singleton으로 구현하자”고 말할 수 있는 것이다. 당신은 어느 편이 더 좋은가?&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;#039;&amp;#039;&amp;#039;디자인 패턴&amp;#039;&amp;#039;&amp;#039;은 새로운 디자인을 설명하고 기존 패턴을 회고적으로 설명하는 짧은 단어집도 제공한다. 패턴은 세부 사항으로 뛰어들기 전에 디자인을 고수준에서 이해하도록 해준다. 또한 객체와 클래스의 전체적 구성을 커다란 입자로 상상하도록 하여 다른 설계자들이 이러한 구성에 붙여진 이름을 이용해 의사소통을 할 수 있도록 해준다. 우리는 “데이터베이스 접근 클래스에 하나의 인스턴스만 가지도록 한다. 클래스에는 단일 인스턴스를 추적하도록 하나의 클래스 변수만 포함해야 한다. 클래스는 전반적으로 이용할 수 있지만 그에 대한 접근을 통제하는 인스턴스를 만들어야 한다. 클래스는 인스턴스 생성 시기를 조절할 수 있어야 하며…”라고 말하기보다는 “데이터베이스 접근 객체를 Singleton으로 구현하자”고 말할 수 있는 것이다. 당신은 어느 편이 더 좋은가?&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-deleted&quot;&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[Category:DesignPatternSmalltalkCompanion]]&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=DesignPatternSmalltalkCompanion:1.1&amp;diff=415&amp;oldid=prev</id>
		<title>Onionmixer: DPSC 왜디자인패턴인가 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=DesignPatternSmalltalkCompanion:1.1&amp;diff=415&amp;oldid=prev"/>
		<updated>2012-07-26T12:33:29Z</updated>

		<summary type="html">&lt;p&gt;DPSC 왜디자인패턴인가 페이지 추가&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;===1.1 왜 디자인 패턴인가?===&lt;br /&gt;
&lt;br /&gt;
전통적 절차적 스타일과 같은 다른 패러다임으로 프로그래밍한 후 객체지향 언어를 학습하기란 힘들다. 스몰토크로 애플리케이션을 만들고 구성하는 방법을 학습하려면 새로운 기술과 문제에 관한 새로운 사고방식들이 필요하다 (예: Rosson &amp;amp; Carroll, 1990; Singley, Carroll, &amp;amp; Alpert, 1991). “Smalltalk Mountain”의 학습 곡선을 오르는 것은 확실히 중요하다. 단순한 스몰토크 애플리케이션을 구축하는 것에 익숙해지는 안정기에 접어 들고 나면 전문가의 고지까지 엄청나게 떨어져있기 때문이다.&lt;br /&gt;
&lt;br /&gt;
스몰토크 전문가들은 다양한 추상화 수준에서 넓은 프로그래밍 스펙트럼과 디자인 지식 및 기술에 이르기까지 초보자가 알지 못하는 것들을 많이 알고 있다. &lt;br /&gt;
&lt;br /&gt;
* 스몰토크 언어의 구문과 의미론에 관한 저수준의 상세내용&lt;br /&gt;
* 기존의 기반 클래스 라이브러리에 클래스, 메소드, 기능성 형태에서 이용할 수 있는 것&lt;br /&gt;
* 새로 발생한 문제에 대해 기존 기능성을 검색하여 재사용하기 위해 스몰토크 대화형 개발환경에서 특정 도구를 사용하는 방법 뿐 아니라 프로그램을 정적 관점과 런타임 관점에서 이해하는 방법&lt;br /&gt;
* 새로운 클래스에서 행위를 정의하고 구현하는 방법, 그리고 이 클래스가 기존 클래스 계층구조 중 어디에 위치해야 하는지&lt;br /&gt;
* 어떠한 클래스가 프레임워크로서 잘 작동하는지 여부&lt;br /&gt;
* 객체 구성과 상호작용의 반복 (되풀이되는) 패턴, 그리고 협력하는 객체들이 (최소한 일부라도) 해법을 제공하는 문제의 종류&lt;br /&gt;
&lt;br /&gt;
위의 목록은 절대 완벽하다고 할 수 없으며 대부분은 초보자들도 이해하고 이용할 수 있다. 하지만 몇 개의 항목, 특히 마지막 항목은ㅡ소프트웨어 설계에서 반복되는 패턴 또는 디자인 패턴ㅡ디자인 전문가 분야이다. &lt;br /&gt;
&lt;br /&gt;
디자인 패턴은 특정 되풀이되는 클래스 문제를 해결하는데 적용할 수 있는 재사용이 가능한 구현 모델 또는 아키텍처다. 패턴은 때때로 하나의 클래스 또는 클래스의 계층구조가 어떻게 함께 작용하는지를 설명한다; 그리고 대부분의 경우는 다수의 클래스와 그 인스턴스가 어떻게 공동으로 작업하는지를 보여준다. 전문가는 새로운 애플리케이션 특정적 문제와 도메인 특정적 문제에 대해 일반적인 패턴 형태를 재적용하고 수정(customize)하기 때문에 특정 아키텍처가 여러 애플리케이션과 시스템에서 다시 나타나는 것으로 밝혀졌다. 따라서 전문가들은 근사하고 확장이 가능한 해법을 실행하기 위해서 새로운 문제에 대해 디자인 패턴을 어떻게 적용시키는지 알고 있다. &lt;br /&gt;
&lt;br /&gt;
일반적으로 설계자들은ㅡ비단 소프트웨어 분야 뿐만 아니라 많은 분야에서ㅡ과거의 문제와 해법에 대한 경험을 새로 직면하게 된 비슷한 문제에 적용한다. Duego와 Benson (1996)이 지적한 바와 같이, 전문 설계자들은 인지 심리학과 인공 지능에서 사례 기반의 추론이라 알려진 것을 적용시켜 과거의 사례를 기억해내어 그를 통해 배운 것을 적용한다. 이것은 체스 마스터, 의사, 변호사, 건축가가 새로운 문제를 해결하는데 사용하는 추론과 같은 종류이다. 현재 디자인 패턴은 소프트웨어 설계자들이 다른 설계자들의 경험으로부터 학습하고 이를 적용시키기도 한다. 다른 분야에서와 마찬가지로 입증된 패턴에 대한 문헌이 생겨나고 있다. 따라서 우리는 전문가 경지로 더 가까이 가기 위해 “다른 이들의 업적을 이용해 발전할 수 있다” (p. 32).&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;디자인 패턴&amp;#039;&amp;#039;&amp;#039;은 새로운 디자인을 설명하고 기존 패턴을 회고적으로 설명하는 짧은 단어집도 제공한다. 패턴은 세부 사항으로 뛰어들기 전에 디자인을 고수준에서 이해하도록 해준다. 또한 객체와 클래스의 전체적 구성을 커다란 입자로 상상하도록 하여 다른 설계자들이 이러한 구성에 붙여진 이름을 이용해 의사소통을 할 수 있도록 해준다. 우리는 “데이터베이스 접근 클래스에 하나의 인스턴스만 가지도록 한다. 클래스에는 단일 인스턴스를 추적하도록 하나의 클래스 변수만 포함해야 한다. 클래스는 전반적으로 이용할 수 있지만 그에 대한 접근을 통제하는 인스턴스를 만들어야 한다. 클래스는 인스턴스 생성 시기를 조절할 수 있어야 하며…”라고 말하기보다는 “데이터베이스 접근 객체를 Singleton으로 구현하자”고 말할 수 있는 것이다. 당신은 어느 편이 더 좋은가?&lt;/div&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>