전통문화대전망 - 전통 미덕 - 누가 몇 가지 자바 플랫폼 개발에 가장 오래 쓰이는 디자인 모델을 소개할 수 있습니까? 통속적이고 예시가 있는 ~500 점 장려를 하는 것이 가장 좋습니다.

누가 몇 가지 자바 플랫폼 개발에 가장 오래 쓰이는 디자인 모델을 소개할 수 있습니까? 통속적이고 예시가 있는 ~500 점 장려를 하는 것이 가장 좋습니다.

예는 매우 다르지만 이해하기 쉽다.

공장 모드, 공장 방법 모드, 단일 인스턴스 모드, 문 모드, 관찰자 모드 및 브리지 모드는 모두 일반적으로 사용됩니다. 프로젝트마다 설계 방향이 다르며 참조할 수 있는 설계 패턴도 다릅니다. 고정된 수량은 없지만 위의 패턴은 많이 사용한다.

나는 또 다른 패턴을 찾아 모두 열거했다.

= = = = = = = = = = = = = = = = = = = = = = = = = = =

Java 의 일반적인 디자인 패턴

혁신 모델

1, 공장-MM 추격 후 식사하세요. 맥도날드와 켄터키의 닭날개는 모두 MM 들이 가장 좋아하는 것이다. 맛은 다르지만, MM 을 맥도날드에 데려가든 켄터키에 가든지 종업원에게' 닭날개 네 개' 라고 하면 된다. 맥도날드와 켄터키는 닭날개를 생산하는 공장이다.

공장 모델: 고객 클래스와 공장 클래스는 분리되어 있습니다. 소비자들은 언제든지 제품이 필요하니 공장에 물어보면 된다. 소비자는 수정하지 않은 신제품을 받아들일 수 있다. 단점은 제품을 수정할 때 공장 클래스도 그에 따라 수정해야 한다는 것이다. 예: 만드는 방법, 클라이언트에 제공하는 방법.

2. 건설자 -MM 은' 사랑해' 라는 말을 가장 즐겨 듣는다. 외지에서 MM 을 만나면 그들의 방언으로 그녀에게 이 말을 할 수 있을 것이다. 오, 저는 다국어 번역기가 있습니다. 각 언어마다 버튼이 있습니다. MM 을 만나면 해당 버튼을 누르기만 하면 해당 언어로' 사랑해' 라고 말할 수 있고 외국 MM 도 쉽게 처리할 수 있다. 이건 내 거야. 이것은 미군이 이라크에서 사용하는 번역기보다 확실히 강하다.

구성 모드: 제품의 내부 표현을 제품 생성 프로세스에서 분리하여 하나의 구성 프로세스에서 서로 다른 내부 표현을 가진 제품 객체를 생성할 수 있도록 합니다. 시공 모델을 통해 제품의 내부 외관을 자율적으로 변경할 수 있으므로 고객은 제품 내부 구성의 세부 사항을 알 필요가 없습니다. 빌드 모드는 단계별 빌드 프로세스를 강제 할 수 있습니다.

3. 공장법-MM 을 맥도날드에 초대해서 햄버거를 먹습니다. Mm 맛에 따라 다르니 사람마다 귀찮다는 것을 기억해야 한다. 나는 보통 공장법 모델을 채택하여 MM 을 데리고 종업원에게 가서 "햄버거 하나 주세요." 라고 말한다. MM 이 종업원에게 어떤 햄버거를 원하는지 직접 알려 달라고 하세요.

공장 메서드 모드: 핵심 공장 클래스는 더 이상 모든 제품의 생성을 담당하는 것이 아니라 하위 클래스에 특정 생성 작업을 제공하여 추상적인 공장 역할이 되고 특정 공장 클래스가 구현해야 하는 인터페이스만 제공할 뿐 인스턴스화해야 하는 제품 클래스의 세부 사항은 건드리지 않습니다.

4. 프로토타입-QQ 에서 MM 과 대화할 때 꼭 다정한 말을 해야 합니다. 나는 징그러운 말을 많이 모아서 필요할 때 베껴 QQ 에 넣었다. 이것이 제 프로토타입입니다. (100 원 각각, 드릴까요? ) 을 참조하십시오

원본 모델 모드: 프로토타입 객체를 지정하여 작성할 객체 유형을 표시한 다음 프로토타입 객체를 복사하여 같은 유형의 객체를 더 많이 작성합니다. 원본 모델 모드를 사용하면 제품 카테고리를 동적으로 늘리거나 줄일 수 있습니다. 제품 범주에는 사전 결정된 계층이 필요하지 않습니다. 원래 모델 모드는 모든 계층에 적용됩니다. 단점은 각 클래스에 복제 메서드가 있어야 한다는 것입니다.

독신-나는 여섯 명의 아름다운 아내가 있다. 그들의 남편은 모두 나다. 저는 우리 남편 시그튼입니다. 그냥' 남편' 이라고 하면 모두 같은 사람을 가리키는데, 바로 나야. (방금 꿈을 꾸었는데, 어떻게 이런 좋은 일이 있을 수 있어.)

Singleton 모드: singleton 모드는 클래스에 하나의 인스턴스만 있고 직접 인스턴스화하여 전체 시스템에 이 인스턴스 singleton 모드를 제공합니다. 실제 "단일 인스턴스" 요구 사항이 있는 경우에만 단일 인스턴스 모드를 사용해야 합니다.

구조 모델

6. Adapter-친구 모임에서 홍콩에서 온 미녀 사라를 만났지만, 나는 광둥어를 할 줄 모르고, 그녀도 표준어를 할 줄 모르기 때문에, 나는 어쩔 수 없이 나의 친구 Kent 에게 도움을 청할 수 밖에 없었다. 나와 사라 사이의 어댑터로서 나와 사라는 서로 대화할 수 있다.

어댑터 모드: 한 클래스의 인터페이스를 클라이언트가 원하는 다른 인터페이스로 변환하여 인터페이스가 일치하지 않아 함께 작동하지 않는 두 클래스가 함께 작동할 수 있도록 합니다. 적응 클래스는 매개 변수에 따라 클라이언트에 적절한 인스턴스를 반환할 수 있습니다.

7. 다리-아침에 MM 을 만나면 좋은 아침을 말해야 한다. 밤에 MM 을 만나면, 좋은 밤이라고 말해야 한다. 새 옷을 입은 MM 을 만나면 옷이 예쁘다고 말해야 한다. MM 의 새로운 헤어스타일을 만나면 머리카락이 예쁘다고 말해야 한다. 나에게 묻지 마라. "오늘 아침에 새로운 헤어스타일을 바꾼 MM 을 만났어요. 뭐라고요?" 그것을 브리지와 결합하면 된다.

브리징 모드: 추상화와 구현을 분리하여 독립적으로 변경할 수 있도록 합니다. 즉, 소프트웨어 시스템의 추상화와 구현 사이에 상속 관계 대신 조합/집합 관계를 사용하여 독립적으로 변경할 수 있습니다.

오늘은 메리의 생일이다. "너는 나에게 생일 선물을 보내야 한다." "음, 그래, 너 혼자 가게에 가서 골라라. 클릭합니다 "이 티셔츠 예쁘네요. 사세요. 이 치마 예쁘네요. 사세요. 이 가방도 괜찮네요. 사세요." "이봐, 나 세 벌 샀어. 나는 선물 하나만 보내겠다고 약속했다. " \ "무엇? 티셔츠, 스커트, 가방 완벽한 코디입니다. 아가씨, 포장해 주세요. " "..." MM 은 복합 모드를 사용할 수 있습니다. 배웠습니까?

결합 모드: 결합 모드는 객체를 트리로 구성하며 전체와 부분 사이의 관계를 설명하는 데 사용할 수 있습니다. 합성 모드는 객체의 트리 구조를 처리하는 모드입니다. 종합 모델은 전체와의 관계를 트리 구조로 표시합니다. 콤보 모드를 사용하면 클라이언트는 개별 구성 요소 객체를 해당 구성 요소로 구성된 복합 객체로 처리할 수 있습니다.

9. decorator-Sarly 의 생일은 사리 차례다. 그녀 스스로 선택하지 마라. 그렇지 않으면 이번 달 급식비가 지나갈 수 없을 것이다. 제가 작년에 화산꼭대기에서 찍은 사진을 꺼내서 뒷면에' 가장 좋은 선물은 사랑하는 파이타' 라고 써놓고 길가에 있는 선물가게에 가서 액자 (선물을 파는 엠엠도 예쁘다) 를 사서 옆집에서 미술디자인을 하는 마이크에게 예쁜 상자를 디자인해 넣으세요 ...

데코레이션 모드: 데코레이션 모드는 클라이언트에 투명하게 개체의 기능을 확장합니다. 이는 상속 관계의 대안으로 상속보다 더 많은 유연성을 제공합니다. 객체에 동적으로 함수를 추가하고 동적으로 취소할 수 있습니다. 몇 가지 기본 기능의 배열 조합을 추가하면 매우 많은 기능이 생성됩니다.

10, 외관-저는 전문적인 니콘 카메라를 가지고 있습니다. 조리개와 셔터를 수동으로 조절하는 것을 좋아합니다. 이렇게 찍은 사진은 프로페셔널하지만 MM 은 이런 것들을 이해하지 못하고 오래 가르쳤습니다. 다행히 카메라에는 입면도 디자인 모드가 있습니다. 카메라를 자동 모드로 조정하고 목표물을 조준하여 셔터를 누르면 된다. 모든 것이 카메라 자동 조절입니다. MM 이 이 카메라로 한 장 찍어 달라고 합니다.

외관 모드: 하위 시스템과의 외부 통신은 통합 외관 객체를 통해 수행되어야 합니다. Facade 모드는 하위 시스템을 쉽게 사용할 수 있는 고급 인터페이스를 제공합니다. 각 하위 시스템에는 하나의 facade 클래스만 있고 이 facade 클래스에는 하나의 인스턴스만 있습니다. 즉, singleton 모드입니다. 그러나 전체 시스템에는 여러 개의 facade 클래스가 있을 수 있습니다.

1 1, flyweight-매일 MM 에 문자 메시지를 보내니 손가락이 지쳐 죽을 지경이다. 요즘 새 핸드폰을 샀는데 핸드폰에 자주 쓰는 문장을 저장할 수 있어요. 쓰고 싶을 때 직접 꺼내서 앞에 MM 의 이름을 붙이면 보내요. 한 글자 한 글자 한 글자 한 글자 없이 쳐요. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 예술명언) * * * 즐기는 문장은 Flyweight 이고, MM 의 이름은 추출된 외부 특징이며 문맥에 따라 사용됩니다.

즐거움 모드: 경량급은 권투에서 가장 가벼운 크기입니다. 메타 공유 모드는 * * * 공유 방식으로 대량의 세밀한 객체를 효율적으로 지원합니다. 메타향유 모드에서 * * * 즐기는 관건은 내면상태와 외적 상태를 구분하는 것이다. 내재 상태는 즐거움 요소에 저장되며, 환경에 따라 달라지지 않는다. 외부 상태는 환경 변화에 따라 변한다. 외부 상태는 내부 상태에 영향을 줄 수 없으며 서로 독립적입니다. * * * 즐길 수 있는 상태와 * * * 즐길 수 없는 상태를 일반 클래스에서 구분하고 * * * 즐길 수 없는 상태를 클래스에서 제외한다. 클라이언트는 * * * * 즐길 개체를 직접 만들 수 없습니다. 팩토리 개체를 사용하여 * * * * 즐길 개체를 만들어야 합니다. 메타 모드를 즐기면 메모리의 객체 수가 크게 줄어듭니다.

12, 에이전트-인터넷에서 MM 과 채팅하는 것은 항상' 안녕하세요, 안녕하세요' 와' 당신은 어디 사람입니까' 로 시작합니다. "몇 살이에요?" "얼마나 높습니까?" 이 말들은 정말 싫어요. 프로그램을 내 대리인으로 쓰다. 당신이 이 말들을 받았을 때, 당신은 자동응답을 설정하고, 당신이 다른 말을 받을 때 나에게 통지해 줄 수 있습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 언어명언) 어때요? 멋지다.

프록시 모드: 프록시 모드는 소스 오브젝트에 대한 참조를 제어하는 오브젝트에 프록시 오브젝트를 제공합니다. 대리인이란 한 사람 또는 한 조직이 다른 사람 또는 다른 조직을 대신하여 행동하는 것을 말합니다. 경우에 따라 클라이언트는 객체를 원하지 않거나 직접 참조할 수 없으며 프록시 객체는 클라이언트와 대상 객체 간의 중개자 역할을 직접 수행할 수 있습니다. 클라이언트는 프록시 주제 객체와 실제 주제 객체를 구분할 수 없습니다. 프록시 모드는 실제 프록시 오브젝트를 알지 못하고 프록시 오브젝트에 대한 하나의 인터페이스만 보유할 수 있습니다. 이 시점에서 프록시 오브젝트는 프록시 오브젝트를 만들 수 없습니다. 프록시 오브젝트는 시스템의 다른 캐릭터에서 만들어 전달해야 합니다.

행동 패턴

13, 책임사슬-저녁에 영어 수업에 가서 빠져나오기 위해 마지막 줄에 앉는다. 와, 앞에 예쁜 MM 몇 개 앉아 있어. 쪽지를 찾아 "안녕, 내 여자 친구가 될 수 있니? 원하지 않으면 전달해 주세요. "노트가 하나씩 전달됩니다. 오, 아니, 첫 줄의 MM 이 선생님께 쪽지를 건네주었어요. 노처녀라고 들었다. 빨리 뛰어!

권한 체인 모드: 권한 체인 모드에서 많은 객체는 각 객체에 대한 다음 홈 디렉토리에 대한 참조를 통해 연결됩니다.

일어서서 체인을 형성하다. 체인의 객체가 요청을 처리하기로 결정할 때까지 요청은 이 체인을 따라 전달됩니다. 클라이언트는 체인의 어떤 객체가 이 요청을 최종적으로 처리하는지 알지 못하며, 시스템은 클라이언트에 영향을 주지 않고 체인을 동적으로 재구성하고 책임을 할당할 수 있습니다. 처리자는 책임을 지거나 다음 가족에게 전달하는 두 가지 옵션이 있습니다. 요청은 결국 수신자 객체에 의해 수락되지 않을 수 있습니다.

14, Command-저는 MM 을 가지고 있습니다. 집안이 매우 엄격해서 만날 수 없습니다. 형의 도움으로 우리 사이에 메시지를 보내야 합니다. 만약 그녀가 나에게 어떤 지시가 있다면, 그녀는 그녀의 형이 나에게 가져다 줄 쪽지를 쓸 것이다. 아니, 그녀의 형은 또 다른 명령을 내렸다. 그에게 감사를 드리기 위해, 나는 그에게 잡장면 한 그릇을 대접했다. 나는 그가 말한 것을 몰랐다. "나는 언니의 세 남자친구에게 동시에 명령을 내렸으니, 네가 나에게 국수를 사 주기 전에 먼저 너의 화를 계산해 봐라." ,:-(

명령 모드: 명령 모드는 요청이나 작업을 하나의 객체로 캡슐화합니다. 명령 모드는 명령을 실행하는 책임과 명령을 실행하는 책임을 분리하여 다른 대상에 위임합니다. 명령 모드를 사용하면 요청자와 발신자가 독립할 수 있으므로 요청자는 수신자 인터페이스를 알 필요가 없습니다. 요청 수신 방법, 작업 실행 여부, 실행 시기, 실행 방법 등은 말할 것도 없습니다. 시스템 지원 명령 취소.

15, 내레이터-저는 MM 을 담그는 진경이 있습니다. 그 안에는 MM 을 담그는 각종 공략이 있습니다. 예를 들면 양식을 먹는 절차, 영화 보러 가는 방법 등이 있습니다. MM 과 데이트할 때 통역을 하고 위의 대본에 따라 오시면 됩니다.

인터프리터 모드: 인터프리터 모드가 구문의 표현을 정의하고 인터프리터를 제공하는 언어가 제공됩니다. 고객은 이 인터프리터를 사용하여 이 언어의 문장을 해석할 수 있다. 인터프리터 모드는 간단한 구문이 있을 때 스키마 설계를 사용하여 이러한 명령문을 해석하는 방법을 설명합니다. 인터프리터 모드에서 언급된 언어는 모든 인터프리터 오브젝트가 해석할 수 있는 모든 조합입니다. 인터프리터 모드에서 구문을 나타내는 명령 클래스의 계층 구조, 즉 일련의 조합 규칙을 정의해야 합니다. 각 명령 객체에는 명령 객체에 대한 해석을 나타내는 해석 방법이 있습니다. 명령 오브젝트 계층에서 오브젝트의 모든 정렬 조합은 언어입니다.

16, 반복자-나는 메리와 사랑에 빠졌고, 모든 것을 아랑곳하지 않고 그녀에게 청혼했다.

메리: "만약 네가 내가 너와 결혼하기를 원한다면, 너는 반드시 나의 조건에 동의해야 한다."

나: "나는 모든 것을 약속한다, 너는 그렇게 말한다. 클릭합니다

Mary: "나는 캐럿 다이아 한 마리에 사로 잡혀있다. 클릭합니다

나: "내가 사겠다, 내가 사겠다, 또 뭐야?"

Mary: "나는 호숫가의 별장을 보았다. 클릭합니다

나: "내가 사겠다, 내가 사겠다, 또 뭐야?"

Mary: "음경은 길이가 50cm 여야합니다. 클릭합니다

내 머리가 윙윙거리고, 나는 의자에 앉아 이를 악물었다. "내가 잘랐어, 내가 잘랐어, 더 있어?" "

......

반복 하위 모드: 반복 하위 모드는 합산의 내부 모양을 노출하지 않고 합산의 요소에 순차적으로 액세스할 수 있습니다. 여러 오브젝트에 의해 형성된 모음을 합산이라고 하며, 합산 오브젝트는 오브젝트 세트를 포함할 수 있는 컨테이너 오브젝트입니다. 반복 하위 모드는 반복 논리를 합산 자체와 분리된 별도의 하위 오브젝트로 캡슐화합니다. 반복 하위 모드는 집계 인터페이스를 단순화합니다. 각 합산 오브젝트에는 하나 이상의 반복 하위 오브젝트가 있을 수 있으며 각 반복의 반복 상태는 서로 독립적일 수 있습니다. 반복 알고리즘은 집계 역할과 독립적으로 변경할 수 있습니다.

17, 조정원-4 mm 마작, 누가 누구에게 얼마를 줘야 할지 알 수 없다. 다행히도, 나는 그들의 칩에 따라 돈을 세고, 돈을 벌고, 나에게서 가져가고, 손해를 보는 사람은 나를 배상하고, 모든 것이 괜찮다. (윌리엄 셰익스피어, 햄릿, 돈명언) 나는 네 대의 MM 핸드폰을 가지고 있다.

중개 모드: 중개 모드는 일련의 객체가 상호 작용하는 방식을 캡슐화하므로 이러한 객체가 명확하게 상호 작용할 필요가 없습니다. 느슨하게 결합될 수 있도록 말이죠. 일부 오브젝트 간의 상호 작용이 변경되어도 다른 오브젝트 간의 상호 작용은 즉시 영향을 받지 않습니다. 이러한 효과가 서로 독립적으로 변할 수 있는지 확인합니다. 중개 모델은 다대다 상호 작용을 일대다 상호 작용으로 변환합니다. 중개자 모델은 객체의 동작과 협업을 추상화하고 소규모 동작에서 객체와 다른 객체 간의 상호 작용을 개별적으로 처리합니다.

18, Memento-여러 MM 과 동시에 대화할 때, 당신이 방금 MM 에게 한 말을 분명히 기억해야 합니다. 그렇지 않으면 MM 이 알게 되면 기분이 나쁠 것입니다. 다행히 비망록이 있어서 아까 어느 MM 에게 한 말을 베껴 비망록에 저장해 두었기 때문에 언제든지 이전 기록을 쉽게 확인할 수 있습니다. (데이비드 아셀, Northern Exposure (미국 TV 드라마), 메모명언)

Memento 모드: memo 오브젝트는 다른 오브젝트 내부 상태의 스냅샷을 저장하는 데 사용되는 오브젝트입니다. Memento 모드의 목적은 캡슐화를 손상시키지 않고 오브젝트의 상태를 캡처하여 외부화하고 저장하여 향후 적절한 시간에 저장된 상태로 되돌릴 수 있도록 하는 것입니다.

19, 관찰자-우리 회사의 최신 MM 정보를 알고 싶습니까? 회사의 MM 정보 사서함 그룹에 가입하면 됩니다. 톰은 정보 수집을 담당한다. 그가 발견한 새로운 정보가 메일 그룹에 게시되었으니, 우리가 구독자 (관찰자) 로서 제때에 정보를 받을 수 있도록 우리에게 통지를 할 필요가 없다.

관찰자 모드: 관찰자 모드는 여러 관찰자 객체가 한 주제 객체를 동시에 모니터링할 수 있도록 다중 종속성을 정의합니다. 이 주제 객체의 상태가 변경되면 모든 관찰자 객체가 자동으로 업데이트될 수 있도록 알림을 받습니다.

20. 상태-MM 과의 교제는 반드시 그녀의 상태에 주의해야 한다. 그녀의 행동은 주마다 다를 것이다. 예를 들어, 당신이 오늘 밤 그녀에게 영화를 보라고 하면, 당신에게 관심이 없는 MM 은 당신을 미워하지 않고 "일이 있다" 고 말할 수 있지만, 아직 당신을 좋아하지 않은 MM 은 "좋아, 하지만 내 동료를 데리고 갈 수 있어?" 라고 말할 수 있습니다. , 이미 당신을 좋아하는 MM 은 "언제? 영화를 보고 술집에 가는 게 어때요? " 물론, 영화를 보는 과정에서 잘 한다면, MM 의 상태를 결코 좋아하지 않고 좋아하는 상태로 만들 수도 있다. (윌리엄 셰익스피어, 햄릿, 영화명언)

상태 모드: 상태 모드를 사용하면 내부 상태가 변경될 때 오브젝트의 동작을 변경할 수 있습니다. 이 개체는 클래스를 바꾼 것 같습니다. 상태 모드는 조사된 객체의 동작을 추상 상태 클래스의 하위 클래스에 속하는 별도의 상태 객체로 래핑합니다. 상태 모드의 목적은 오브젝트의 내부 상태가 변경될 때 오브젝트의 동작을 변경하는 것입니다. State 모드에서는 시스템의 가능한 각 상태에 대해 state 클래스의 하위 클래스를 만들어야 합니다. 시스템 상태가 변경되면 선택한 서브클래스가 변경됩니다.

2 1, 전략-다른 유형의 MM 데이트와 다른 전략이 필요합니다. 어떤 사람은 영화를 청하고, 어떤 사람은 간식을 먹고, 어떤 사람은 해변에 가서 낭만적이다. 하나의 목적은 MM 의 환심을 사려고 하는 것이다. 나의 MM 추격 가방에는 많은 공략이 있다.

정책 패턴 (Policy pattern): 정책 모드는 각 알고리즘이 서로 대체할 수 있도록 동일한 인터페이스를 가진 별도의 클래스로 캡슐화되는 알고리즘 세트에 대한 것입니다. 정책 모드를 사용하면 클라이언트에 영향을 주지 않고 알고리즘을 변경할 수 있습니다. 전략 모델은 행동을 환경과 분리합니다. 환경 클래스는 다양한 알고리즘을 제공하는 동작 클래스를 유지 관리하고 쿼리할 책임이 있습니다. 알고리즘과 환경은 독립적이므로 알고리즘의 증감과 수정은 환경과 클라이언트에 영향을 주지 않습니다.

22. 템플릿법-당신은 클래식 문장' 어떻게 여자에게 잠자리에 들도록 권유하는가' 를 본 적이 있습니까? 여학생이 잠자리에 드는 단계는 8 가지 템플릿법으로 나뉜다. 핑수 상봉, 교착상태 타파, 추구, 키스, 전희, 손, 애무, 들어가기, 하지만 각 단계마다 상황에 따라 다른 방법이 있다.

템플릿 메서드 모드: 템플릿 메서드 모드는 추상 클래스를 준비하고 특정 메서드 및 특정 생성자로 일부 논리를 구현한 다음 일부 추상 메서드를 선언하여 하위 클래스가 나머지 논리를 구현하도록 합니다. 하위 클래스마다 이러한 추상 방법을 다른 방식으로 구현할 수 있으므로 나머지 논리에 대해 다른 구현이 가능합니다. 먼저 최상위 수준의 논리적 프레임워크를 만들고, 논리의 세부 사항은 특정 하위 클래스에 남겨져 실현됩니다.

23.VISITOR—-발렌타인데이가 왔습니다. 저는 MM 마다 꽃 한 다발과 카드 한 장을 보내고 싶지만, MM 마다 보내는 꽃은 그녀의 개인적 특징에 따라, 각 카드는 그녀의 개인적 특징에 따라 선택해야 합니다. 내가 어떻게 스스로 발견할 수 있을까? 꽃가게 주인과 선물가게 주인에게 방문을 부탁하는 게 좋을 것 같아요. 그래서 꽃가게 주인은 MM 의 특징에 따라 꽃 한 송이를 고를 수 있고, 선물가게 주인도 각자의 특징에 따라 카드를 고를 수 있어요. 이렇게 하면 훨씬 쉬워요.

방문자 모드: 방문자 모드의 목적은 일부 데이터 구조 요소에 부과되는 일부 작업을 캡슐화하는 것입니다. 이러한 작업을 수정해야 하는 경우 이 작업을 허용하는 데이터 구조를 그대로 유지할 수 있습니다. 방문자 모드는 데이터 구조가 상대적으로 불확실한 시스템에 적용되며, 해당 구조에 작용하는 작업에서 데이터 구조를 분리하여 작업 세트를 비교적 자유롭게 진화시킬 수 있도록 합니다. 방문자 모드는 새 작업을 쉽게 추가할 수 있습니다. 즉, 새 방문자 클래스를 추가하는 것입니다. Visitor 모드는 개별 노드 클래스가 아닌 하나의 visitor 객체에 관련 비헤이비어를 집중시킵니다. Visitor 모드를 사용할 때는 가능한 많은 객체 찾아보기 논리를 하위 클래스가 아닌 visitor 클래스에 배치해야 합니다. 방문자 모드는 여러 클래스 계층에서 서로 다른 계층에 속하는 멤버 클래스에 액세스할 수 있습니다.