<?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%3AAdapter</id>
	<title>DesignPatternSmalltalkCompanion:Adapter - 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%3AAdapter"/>
	<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=DesignPatternSmalltalkCompanion:Adapter&amp;action=history"/>
	<updated>2026-05-01T15:47:54Z</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:Adapter&amp;diff=528&amp;oldid=prev</id>
		<title>Onionmixer: 큰따옴표 수정</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=DesignPatternSmalltalkCompanion:Adapter&amp;diff=528&amp;oldid=prev"/>
		<updated>2013-01-20T07:37:37Z</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 07:37, 20 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-l169&quot;&gt;Line 169:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 169:&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;IBM 스몰토크에서는 이와 비슷한 접근법을 채택하여 위젯이 이벤트를 애플리케이션 특정적 메시지로 조정한다는 점에서 스스로의 대화형 위젯 행위뿐 아니라 Adapter의 역할도 충족시킨다고 할 수 있다. 애플리케이션 객체는 callback이나 event handler 메커니즘을 사용하여 사용자 실행이 발생 시 이 정보를 통보받도록 등록할 수 있다 (IBM 스몰토크는 사용자 실행을 두 가지 추상화 수준으로 구분한다: 낮은 수준의 마우스 및 키 누름 오퍼레이션은 이벤트 핸들러 머시너리에 의해 처리되고, 버튼 위젯에서 윈도우를 닫거나 완료 버튼다운/버튼업 실행과 같은 높은 수준의 실행은 callback에 의해 처리된다). 두 메커니즘 모두 각 위젯 이벤트마다 전송해야 할 메시지를 애플리케이션이 명시하도록 한다. (IBM 스몰토크의 callback과 이벤트 처리기 메커니즘에 관한 상세 내용은 IBM 스몰토크의 317페이지 SASE에 설명된 Observer 패턴과 Smith, 1995, Shafer &amp;amp; Herndon, 1995를 참조하라).  &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;IBM 스몰토크에서는 이와 비슷한 접근법을 채택하여 위젯이 이벤트를 애플리케이션 특정적 메시지로 조정한다는 점에서 스스로의 대화형 위젯 행위뿐 아니라 Adapter의 역할도 충족시킨다고 할 수 있다. 애플리케이션 객체는 callback이나 event handler 메커니즘을 사용하여 사용자 실행이 발생 시 이 정보를 통보받도록 등록할 수 있다 (IBM 스몰토크는 사용자 실행을 두 가지 추상화 수준으로 구분한다: 낮은 수준의 마우스 및 키 누름 오퍼레이션은 이벤트 핸들러 머시너리에 의해 처리되고, 버튼 위젯에서 윈도우를 닫거나 완료 버튼다운/버튼업 실행과 같은 높은 수준의 실행은 callback에 의해 처리된다). 두 메커니즘 모두 각 위젯 이벤트마다 전송해야 할 메시지를 애플리케이션이 명시하도록 한다. (IBM 스몰토크의 callback과 이벤트 처리기 메커니즘에 관한 상세 내용은 IBM 스몰토크의 317페이지 SASE에 설명된 Observer 패턴과 Smith, 1995, Shafer &amp;amp; Herndon, 1995를 참조하라).  &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;비주얼웍스에서조차 특정 뷰는 다수의 어댑터 클래스로 어댑터의 역할을 충족할 수 있다. 일부 View 클래스는 대체가능하도록 구현되어, 뷰가 &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;“관찰하는” &lt;/del&gt;측면 뿐만 아니라 특정 이벤트를 위한 애플리케이션 특정적 메시지를 애플리케이션이 명시하도록 만들 수 있다. 예를 들어, TextView 클래스 코멘트 설명은 다음과 같이 나타낼 수 있다: &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;“TextView는 &lt;/del&gt;‘대체가능한’ 뷰이다…최고의 메커니즘은 일반 TextView 오퍼레이션을 모델특정적 오퍼레이션으로 변환하는 어댑터로 간주할 수 있는 선택기 집합체이다.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;” &lt;/del&gt;다음 메시지로 TextView들을 생성할 수 있다:&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;비주얼웍스에서조차 특정 뷰는 다수의 어댑터 클래스로 어댑터의 역할을 충족할 수 있다. 일부 View 클래스는 대체가능하도록 구현되어, 뷰가 &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;관찰하는&quot; &lt;/ins&gt;측면 뿐만 아니라 특정 이벤트를 위한 애플리케이션 특정적 메시지를 애플리케이션이 명시하도록 만들 수 있다. 예를 들어, TextView 클래스 코멘트 설명은 다음과 같이 나타낼 수 있다: &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;TextView는 &lt;/ins&gt;‘대체가능한’ 뷰이다…최고의 메커니즘은 일반 TextView 오퍼레이션을 모델특정적 오퍼레이션으로 변환하는 어댑터로 간주할 수 있는 선택기 집합체이다.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot; &lt;/ins&gt;다음 메시지로 TextView들을 생성할 수 있다:&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;&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;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;&amp;lt;syntaxhighlight lang=&amp;quot;smalltalk&amp;quot;&amp;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-l387&quot;&gt;Line 387:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 387:&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; 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;ValueModel은 어댑터처럼 보이는 서브클래스도 포함하고 있지만ㅡValueModel 계층구조에 있으며 value와 value: 메시지를 구현한다ㅡGoF 기준에 따르면 이 서브클래스들은 어댑터가 아니다. 실제 어댑터라면 어댑티는 어댑터의 평생 동안 영속적 하위컴포넌트가 되고, 어댑터가 메시지를 수신하면 그것의 어댑티로 두 번째 (주로 다른) 메시지를 전달한다. 반면 ValueModel 서브클래스인 ValueHolder의 인스턴스는 단순히 다른 객체를 둘러쌀 뿐이다. 래퍼 객체들 중 하나가 value 메시지를 수신하면 이는 둘러싼 객체를 반환하는 일만 한다; 메시지를 전송하는 일은 하지 않는다. 더 중요한 점은, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;“진정한” &lt;/del&gt;어댑터는 value: 메시지를 받으면 두 번째 메시지가 어댑티로 전달된다는 점이다. 메시지가 어댑티를 수정할지도 모르지만 캡슐화된 어댑티 객체는 똑같은 객체로 남아 있는다. ValueHolder 래퍼가 value: 메시지를 수신하면 그것은 임베디드 객체를 대체한다; 따라서 이제 다른 객체가 되는 것이다. 비주얼 스몰토크의 SharedValue 클래스는 이와 같은 방식으로 행동한다.&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;ValueModel은 어댑터처럼 보이는 서브클래스도 포함하고 있지만ㅡValueModel 계층구조에 있으며 value와 value: 메시지를 구현한다ㅡGoF 기준에 따르면 이 서브클래스들은 어댑터가 아니다. 실제 어댑터라면 어댑티는 어댑터의 평생 동안 영속적 하위컴포넌트가 되고, 어댑터가 메시지를 수신하면 그것의 어댑티로 두 번째 (주로 다른) 메시지를 전달한다. 반면 ValueModel 서브클래스인 ValueHolder의 인스턴스는 단순히 다른 객체를 둘러쌀 뿐이다. 래퍼 객체들 중 하나가 value 메시지를 수신하면 이는 둘러싼 객체를 반환하는 일만 한다; 메시지를 전송하는 일은 하지 않는다. 더 중요한 점은, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&quot;진정한&quot; &lt;/ins&gt;어댑터는 value: 메시지를 받으면 두 번째 메시지가 어댑티로 전달된다는 점이다. 메시지가 어댑티를 수정할지도 모르지만 캡슐화된 어댑티 객체는 똑같은 객체로 남아 있는다. ValueHolder 래퍼가 value: 메시지를 수신하면 그것은 임베디드 객체를 대체한다; 따라서 이제 다른 객체가 되는 것이다. 비주얼 스몰토크의 SharedValue 클래스는 이와 같은 방식으로 행동한다.&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;이러한 구현은 GoF의 어댑터는 확실히 아니지만 개발자들이 특정 애플리케이션 컨텍스트에서 꽤 유용한 것으로 밝힌 몇 가지 조정하는 것들이 있다. 중요한 점은, 때로는 우리가 패턴과 유사한 무언가를 구현할 수 있고ㅡ패턴 정의의 실제 예제라고 볼 수는 없지만ㅡ여전히 유용하게 사용될 수 있다는 점이다. 어댑터와 같이 ValueHolder와 ShareValue 들은 객체를 둘러싼 후 래퍼가 일반 value 메시지에 응답하길 원하는 조정 상황에 유용하다; 물론 GoF 어댑터와는 다른 방식이겠지만 그럼에도 불구하고 객체 값을 검색하기 위해 value 메시지를 전송하는 법만 알고 있는 객체들이나 위젯의 경우 유용하다. 래퍼들은 (SharedValue 또는 ValueHolder) 스몰토크에서는 허용되지 않는 실제 참조에 의한 호출(call-by-reference) 의미론을 시뮬레이션하는데 사용되기도 한다. (스몰토크에서 메소드는 argument로 메시지를 전송할 수는 있으나 할당 연산자 (:=)를 이용해 argument에 새로운 객체를 할당할 수는 없다; 그러나 argument가 래퍼인 경우 메소드는 argument에게 value: 메시지를 전송할 수 있고ㅡ둘러싼 객체를 교체ㅡ전송자는 이에 따라 래퍼에게 value 를 보냄으로써 새로운 객체를 검색할 수 있다.) 결말은 패턴을 정확히 있는 그대로 적용할 수도 있고 약간 다른 애플리케이션 컨텍스트의 경우 패턴의 표준 정의를 본뜨거나 조정할 수도 있다는 점이다.  &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;이러한 구현은 GoF의 어댑터는 확실히 아니지만 개발자들이 특정 애플리케이션 컨텍스트에서 꽤 유용한 것으로 밝힌 몇 가지 조정하는 것들이 있다. 중요한 점은, 때로는 우리가 패턴과 유사한 무언가를 구현할 수 있고ㅡ패턴 정의의 실제 예제라고 볼 수는 없지만ㅡ여전히 유용하게 사용될 수 있다는 점이다. 어댑터와 같이 ValueHolder와 ShareValue 들은 객체를 둘러싼 후 래퍼가 일반 value 메시지에 응답하길 원하는 조정 상황에 유용하다; 물론 GoF 어댑터와는 다른 방식이겠지만 그럼에도 불구하고 객체 값을 검색하기 위해 value 메시지를 전송하는 법만 알고 있는 객체들이나 위젯의 경우 유용하다. 래퍼들은 (SharedValue 또는 ValueHolder) 스몰토크에서는 허용되지 않는 실제 참조에 의한 호출(call-by-reference) 의미론을 시뮬레이션하는데 사용되기도 한다. (스몰토크에서 메소드는 argument로 메시지를 전송할 수는 있으나 할당 연산자 (:=)를 이용해 argument에 새로운 객체를 할당할 수는 없다; 그러나 argument가 래퍼인 경우 메소드는 argument에게 value: 메시지를 전송할 수 있고ㅡ둘러싼 객체를 교체ㅡ전송자는 이에 따라 래퍼에게 value 를 보냄으로써 새로운 객체를 검색할 수 있다.) 결말은 패턴을 정확히 있는 그대로 적용할 수도 있고 약간 다른 애플리케이션 컨텍스트의 경우 패턴의 표준 정의를 본뜨거나 조정할 수도 있다는 점이다.  &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-l409&quot;&gt;Line 409:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 409:&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;====Bridge와 Façade====&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;====Bridge와 Façade====&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;적어도 클라이언트의 관점에서 보면 어댑터는 어댑티의 인터페이스를 변경시킨다. 다른 패턴들 또한 클라이언트로 서로 다른 메시징 인터페이스를 표시하는 데 사용된다. Bridge (121) 패턴에서는, Abstraction 객체가 실제 작업이 이루어지는 구현 객체를 향해 메시지를 성공적으로 해석하여 전달한다. 그러나 Bridge와 어댑터는 의도나 적용성에 있어 서로 다르다. 어댑터는, 특정 프로토콜을 이용해 자신의 협력자와 의사소통하는 방법만 알고 있는 객체를 갖고 있지만 그 프로토콜을 이해하지 못하는 객체와 협력할 필요가 있는 경우에 적용할 수 있다. Bridge는 &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;목적이다 (DP 149). 기존 객체를 양립할 수 없는(incompatible) 프로토콜로 개조하기 위해 만들어진 것이 아니다.  &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;적어도 클라이언트의 관점에서 보면 어댑터는 어댑티의 인터페이스를 변경시킨다. 다른 패턴들 또한 클라이언트로 서로 다른 메시징 인터페이스를 표시하는 데 사용된다. Bridge (121) 패턴에서는, Abstraction 객체가 실제 작업이 이루어지는 구현 객체를 향해 메시지를 성공적으로 해석하여 전달한다. 그러나 Bridge와 어댑터는 의도나 적용성에 있어 서로 다르다. 어댑터는, 특정 프로토콜을 이용해 자신의 협력자와 의사소통하는 방법만 알고 있는 객체를 갖고 있지만 그 프로토콜을 이해하지 못하는 객체와 협력할 필요가 있는 경우에 적용할 수 있다. Bridge는 &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;이 &lt;/ins&gt;목적이다 (DP 149). 기존 객체를 양립할 수 없는(incompatible) 프로토콜로 개조하기 위해 만들어진 것이 아니다.  &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;Façade (179)는 객체의 모든 하위시스템에 추상 인터페이스를 제공하는 반면 어댑터는 유일한 객체를 클라이언트에 조절한다. 물론 두 패턴의 구현과 적용성은 꽤 다르지만 그 정신, 다시 말해 클라이언트에게 대안적 인터페이스를 제공한다는 점은 같다.  &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;Façade (179)는 객체의 모든 하위시스템에 추상 인터페이스를 제공하는 반면 어댑터는 유일한 객체를 클라이언트에 조절한다. 물론 두 패턴의 구현과 적용성은 꽤 다르지만 그 정신, 다시 말해 클라이언트에게 대안적 인터페이스를 제공한다는 점은 같다.  &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:Adapter&amp;diff=527&amp;oldid=prev</id>
		<title>Onionmixer at 02:34, 29 July 2012</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=DesignPatternSmalltalkCompanion:Adapter&amp;diff=527&amp;oldid=prev"/>
		<updated>2012-07-29T02:34:36Z</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 02:34, 29 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-l7&quot;&gt;Line 7:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 7:&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; 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;[[image:&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dpsc_chapter04_Adapter_01&lt;/del&gt;.png]]&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;[[image:&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dpsc_chapter04_Adapter_01v2&lt;/ins&gt;.png]]&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;/table&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
	<entry>
		<id>https://trans.onionmixer.net/wiki/index.php?title=DesignPatternSmalltalkCompanion:Adapter&amp;diff=526&amp;oldid=prev</id>
		<title>Onionmixer: DPSC ADAPTER 페이지 추가</title>
		<link rel="alternate" type="text/html" href="https://trans.onionmixer.net/wiki/index.php?title=DesignPatternSmalltalkCompanion:Adapter&amp;diff=526&amp;oldid=prev"/>
		<updated>2012-07-29T02:29:29Z</updated>

		<summary type="html">&lt;p&gt;DPSC ADAPTER 페이지 추가&lt;/p&gt;
&lt;a href=&quot;https://trans.onionmixer.net/wiki/index.php?title=DesignPatternSmalltalkCompanion:Adapter&amp;amp;diff=526&quot;&gt;Show changes&lt;/a&gt;</summary>
		<author><name>Onionmixer</name></author>
	</entry>
</feed>