<?xml version="1.0" encoding="UTF-8"?>
<!-- generator="FeedCreator 1.8" -->
<?xml-stylesheet href="http://wiki.ledyx.xyz/lib/exe/css.php?s=feed" type="text/css"?>
<rdf:RDF
    xmlns="http://purl.org/rss/1.0/"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
    xmlns:dc="http://purl.org/dc/elements/1.1/">
    <channel rdf:about="http://wiki.ledyx.xyz/feed.php">
        <title>Ledyx WIKI - design_pattern</title>
        <description></description>
        <link>http://wiki.ledyx.xyz/</link>
        <image rdf:resource="http://wiki.ledyx.xyz/lib/exe/fetch.php?media=favicon.ico" />
       <dc:date>2026-08-03T18:03:03+00:00</dc:date>
        <items>
            <rdf:Seq>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:abstract_factory_pattern&amp;rev=1612668285&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:adapter_pattern&amp;rev=1707139001&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:bridge_pattern&amp;rev=1612668317&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:builder_pattern&amp;rev=1612668326&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:chain_of_responsibility_pattern&amp;rev=1612668335&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:composite_pattern&amp;rev=1612668350&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:decorator_pattern&amp;rev=1655225960&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:design_pattern&amp;rev=1612668240&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:factory_method_pattern&amp;rev=1612668390&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:flyweight_pattern&amp;rev=1612668398&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:iterator_pattern&amp;rev=1612668404&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:observer_pattern&amp;rev=1612668516&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:prototype_pattern&amp;rev=1612668531&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:proxy_pattern&amp;rev=1655227258&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:singleton_pattern&amp;rev=1612668548&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:state_pattern&amp;rev=1612668593&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:strategy_pattern&amp;rev=1612668600&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:template_method_pattern&amp;rev=1612668626&amp;do=diff"/>
                <rdf:li rdf:resource="http://wiki.ledyx.xyz/doku.php?id=design_pattern:visitor_pattern&amp;rev=1612668635&amp;do=diff"/>
            </rdf:Seq>
        </items>
    </channel>
    <image rdf:about="http://wiki.ledyx.xyz/lib/exe/fetch.php?media=favicon.ico">
        <title>Ledyx WIKI</title>
        <link>http://wiki.ledyx.xyz/</link>
        <url>http://wiki.ledyx.xyz/lib/exe/fetch.php?media=favicon.ico</url>
    </image>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:abstract_factory_pattern&amp;rev=1612668285&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T03:24:45+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>abstract_factory_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:abstract_factory_pattern&amp;rev=1612668285&amp;do=diff</link>
        <description>Abstract Factory Pattern

관련 부품을 조합해서 인스턴스 생성

	*  부품의 구체적인 구현에는 주목하지 않고, 인터페이스(API)에 주목.
	*  추상적인 공장(Abstract Factory)에서 추상적인 부품을 조립하고</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:adapter_pattern&amp;rev=1707139001&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2024-02-05T13:16:41+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>adapter_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:adapter_pattern&amp;rev=1707139001&amp;do=diff</link>
        <description>Adapter Pattern

서로 다른 인터페이스(API)를 갖는 클래스들을 연결하여 바꿔서 재이용.

	*  마치 220V 전원 110V 전원으로 개조시키는 것을 비유.
	*  &#039;이미 제공된 API&#039;와 &#039;필요한 API&#039; 사이의 &#039;차이&#039;를 없애주는 Design Pattern.</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:bridge_pattern&amp;rev=1612668317&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T03:25:17+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>bridge_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:bridge_pattern&amp;rev=1612668317&amp;do=diff</link>
        <description>Bridge Pattern

2종류의 확장이 혼재하는 프로그램을 기능 계층과 구현 계층으로 분리하고, 그 사이를 위임으로 연결

	*  클래스 계층의 역할
		*  기능 클래스 계층
			*  상위 클래스는 기본적인 기능을 가지고 있다.</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:builder_pattern&amp;rev=1612668326&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T03:25:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>builder_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:builder_pattern&amp;rev=1612668326&amp;do=diff</link>
        <description>Builder Pattern

복잡한 인스턴스를 단계적으로 조립하기

	*  복잡한 구조를 한 번에 완성시키기 어려움. 그렇기 때문에 각 부분을 만들고 단계적으로 조립.

architecture modeling design_pattern creational

Director



Builder, ConcreteBuilder







Client</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:chain_of_responsibility_pattern&amp;rev=1612668335&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T03:25:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>chain_of_responsibility_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:chain_of_responsibility_pattern&amp;rev=1612668335&amp;do=diff</link>
        <description>Chain of responsibility Pattern

각 요구를 처리할 수 있는지, 없는지를 순서대로 검색해가며 책임 떠넘기기. 복수의 객체가 연결되어 있는 내부의 어딘가에서 처리 수행. “어떤 처리를 어떤 객체가 수행해야 한다</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:composite_pattern&amp;rev=1612668350&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T03:25:50+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>composite_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:composite_pattern&amp;rev=1612668350&amp;do=diff</link>
        <description>Composite Pattern

그릇(복수)과 내용물(단수)을 동일시(= 혼합물, Composite)해서 재귀적인 구조 구축.

	*  Tree 구조의 Data(= 재귀적)
		*  File System
		*  Test Case 3개가 있을 때, 이를 모두 합쳐서 Test하고 싶은 경우</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:decorator_pattern&amp;rev=1655225960&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-14T16:59:20+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>decorator_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:decorator_pattern&amp;rev=1655225960&amp;do=diff</link>
        <description>Decorator Pattern

장식과 내용물을 동일시해서 장식을 여러 겹 중복되게 하기. 투과적인 인터페이스(API)를 갖는다. (예를 들어 케이크에 초콜릿으로 코팅하면 초콜릿 케이크, 생크림으로 코팅하면 생크림 케이크)</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:design_pattern&amp;rev=1612668240&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T03:24:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>design_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:design_pattern&amp;rev=1612668240&amp;do=diff</link>
        <description>Design Pattern

구체적인 구현을 실현하기 위한 사고방식, 해법.

&lt;https://en.wikipedia.org/wiki/Design_Patterns#Patterns_by_Type&gt;

architecture modeling design_pattern

기초 용어

SOLID : 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙
unified_modeling_language

	*  상속(Inherit)와 위임(Delegation)
		*  상속은 Tight coupling, 위임은 Loose coupling.
		*  클래스 관계를 동적으로 바꾸 싶을때, 느슨한 연결(Loose Coupling)을 할 때는 위임. 그 반대의 경우 상속.…</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:factory_method_pattern&amp;rev=1612668390&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T03:26:30+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>factory_method_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:factory_method_pattern&amp;rev=1612668390&amp;do=diff</link>
        <description>Factory Method Pattern

하위 클래스에서 인스턴스 작성

	*  상위 클래스에서 인스턴스 작성법의 뼈대를 세우고, 구체적인 작성은 하위 클래스에서 실행.
	*  template_method_pattern을 인스턴스 생성에 적용한 패턴.

architecture modeling design_pattern creational

인스턴스 생성을 위한 Framework(골격) 측</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:flyweight_pattern&amp;rev=1612668398&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T03:26:38+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>flyweight_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:flyweight_pattern&amp;rev=1612668398&amp;do=diff</link>
        <description>Flywieght Pattern

이미 생성한 객체가 있으면 공유, 없으면 생성하여 메모리 절약.

architecture modeling design_pattern structural

Flyweight



ConcreteFlyweight



FlyweightFactory</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:iterator_pattern&amp;rev=1612668404&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T03:26:44+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>iterator_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:iterator_pattern&amp;rev=1612668404&amp;do=diff</link>
        <description>Iterator Pattern

집합체의 요소들을 동일한 방법으로, 순서대로 처리.

architecture modeling design_pattern behavioral

반복자(Iterator) API





반복할 집합체(Aggregate)





Client</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:observer_pattern&amp;rev=1612668516&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T03:28:36+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>observer_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:observer_pattern&amp;rev=1612668516&amp;do=diff</link>
        <description>Observer Pattern

publish &lt;=&gt; subscribe

architecture modeling design_pattern behavioral

Implementation</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:prototype_pattern&amp;rev=1612668531&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T03:28:51+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>prototype_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:prototype_pattern&amp;rev=1612668531&amp;do=diff</link>
        <description>Prototype Pattern

	*  모형이 되는 인스턴스를 복사해서 인스턴스 생성
	*  그러나 Java/C#에서 제공되는 clone() 을 사용하면 얕은 복사(Shallow Copy)가 되므로 클래스 안에 참조 형식의 데이터가 있으면 제대로 복사가 되지 않음.</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:proxy_pattern&amp;rev=1655227258&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2022-06-14T17:20:58+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>proxy_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:proxy_pattern&amp;rev=1655227258&amp;do=diff</link>
        <description>Proxy Pattern

본인이 필요해질 때까지 대리인(Proxy)에게 위임. 본인에 대한 접근(Access)를 줄여주는 패턴.

	*  접근 제어
		*  Authorization
		*  Caching
		*  Lazy loading

	*  부가 기능 추가

architecture modeling design_pattern structural

Virtual Proxy

Instance가 필요한 시점에서 생성 및 초기화를 실행. 필요한 객체만 생성하여 초기화시 속도 향상. 이 때, RealSubject 역할은 Proxy의 존재를 알지 못함. (말 그대로 대리자.) Lazy Loading.…</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:singleton_pattern&amp;rev=1612668548&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T03:29:08+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>singleton_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:singleton_pattern&amp;rev=1612668548&amp;do=diff</link>
        <description>Singleton Pattern

인스턴스 하나만 만들기

architecture modeling design_pattern creational

Double-Checking Locking



Initialization on demand holder idiom

※ java.lang.ExceptionInInitializerError 발생 주의.



Enum initialization

Effective Java에서 소개된 방법.

	*  Thread-safe</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:state_pattern&amp;rev=1612668593&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T03:29:53+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>state_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:state_pattern&amp;rev=1612668593&amp;do=diff</link>
        <description>State Pattern

객체를 상태로 표현하여 그 상태를 변화시켜 행위를 변경.

architecture modeling design_pattern behavioral

전등을 On, Off 상태로 전환한다고 가정.

State



ConcreteState





Context

State 전환을 하는 주체



Client</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:strategy_pattern&amp;rev=1612668600&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T03:30:00+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>strategy_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:strategy_pattern&amp;rev=1612668600&amp;do=diff</link>
        <description>Strategy Pattern

알고리즘(전략)을 전부 교체해서 수정하기 쉽도록 만들기

	*  언제 쓰면 좋을까?
		*  원래 알고리즘과 개선된 알고리즘의 속도 비교
		*  장기 게임에서 사용자의 난이도 선택에 따른 루틴 교체</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:template_method_pattern&amp;rev=1612668626&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T03:30:26+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>template_method_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:template_method_pattern&amp;rev=1612668626&amp;do=diff</link>
        <description>Template Method Pattern

하위 클래스에서 구체적으로 처리.

	*  상위 클래스에서 처리의 뼈대를 세우고, 구체적인 처리를 하위 클래스에서 실행.

architecture modeling design_pattern behavioral

GUI 앱에서 Menu, Sidebar를 열기/닫기/크기 얻기 동작을 한다고 가정.</description>
    </item>
    <item rdf:about="http://wiki.ledyx.xyz/doku.php?id=design_pattern:visitor_pattern&amp;rev=1612668635&amp;do=diff">
        <dc:format>text/html</dc:format>
        <dc:date>2021-02-07T03:30:35+00:00</dc:date>
        <dc:creator>Anonymous (anonymous@undisclosed.example.com)</dc:creator>
        <title>visitor_pattern</title>
        <link>http://wiki.ledyx.xyz/doku.php?id=design_pattern:visitor_pattern&amp;rev=1612668635&amp;do=diff</link>
        <description>Visitor Pattern

객체 구조를 돌아다니면서 동일한 조작을 반복해서 적용하기. 이 때, &#039;객체 구조&#039;와 &#039;처리(Algorithm)&#039;을 분리하는 것이 핵심. 개방-폐쇄 원칙(OCP, Open-Closed Principle)기존 클래스를 수정하지 않고 확장할 수 있도록 하는 것.</description>
    </item>
</rdf:RDF>
