인 스 턴 스 설명 방문 자 모드 (Visitor Pattern)
추상 적 인 방문 자 (Visitor), 구체 적 인 방문 자 (ConcreteVisitor), 추상 적 인 요소 (Element), 구체 적 인 요소 (ConcreteElement), 대상 구조 류 (Object Structure), 클 라 이언 트 (Client)
추상 방문 자 (Visitor): 방문 요소 의 동작 을 추상 화 합 니 다.
구체 적 인 방문 자 (ConcreteVisitor): 방문 요 소 를 실현 하 는 동작
추상 요소 (Element): 방문 을 받 는 동작 을 정의 합 니 다. 그 매개 변 수 는 방문 자 입 니 다.
구체 적 인 요소 (ConcreteElement): 접근 작업 을 수행 합 니 다.
대상 구조 류 (Object Structure): 요 소 를 매 거 할 수 있 고 요 소 를 관리 할 수 있 습 니 다.
클 라 이언 트 (클 라 이언 트) :요소 집합 을 정의 하고 서로 다른 방문 자의 방문 을 받 습 니 다.
실현 방향:
대상 구조 류 에 요 소 를 추가 한 다음 에 다양한 방문 자 를 정의 하고 대상 구조 류 를 이용 하여 방문 자 를 받 아들 이면 된다.
아 날로 그:
응용 필드:
사용자 가 블 로 그 를 방문 하 다
분석:
사용 자 는 컴퓨터 의 웹 방식 (방문 자) 이나 모 바 일 Wap 방식 (방문 자) 을 통 해 블 로 그 를 방문 할 수 있다. 모든 블 로 그 는 하나의 요소 이 고 블 로그 목록 은 하나의 대상 구조 류 이다.
다음은 콘 솔 프로그램 에서 Visitor Pattern 을 어떻게 사용 하 는 지 보 여 드 리 겠 습 니 다.
1. 추상 적 인 방문 자 (Visitor):
// (Visitor)
abstract class Visitor
{
public abstract void VisitBlog(Element element);
}
2. 구체 적 인 방문 자 (ConcreteVisitor):
// (ConcreteVisitor)
class WebVisitor : Visitor
{
public override void VisitBlog(Element element)
{
Console.WriteLine(" web Blog:" + element.BlogName);
}
}
// (ConcreteVisitor)
class WapVisitor : Visitor
{
public override void VisitBlog(Element element)
{
Console.WriteLine(" wap Blog:" + element.BlogName);
}
}
3. 추상 요소 (Element): // (Element)
abstract class Element
{
public string BlogName { get; set; }
abstract public void Accept(Visitor visotr);
}
四、具体元素(ConcreteElement):5. 대상 구조 류 (ObjectStructure):// (ConcreteElement) class BlogElement : Element { public BlogElement(string blogname) { this.BlogName = blogname; } public override void Accept(Visitor visitor) { visitor.VisitBlog(this); } }
6. 클 라 이언 트 (클 라 이언 트) :// (ObjectStructure) class Blogs { private IList<Element> blogList = new List<Element>(); public void AddBlog(Element element) { blogList.Add(element); } public void RemoveBlog(Element element) { blogList.Remove(element); } public void Accept(Visitor visitor) { foreach (Element e in blogList) e.Accept(visitor); } }
// (Client) class Program { static void Main(string[] args) { Blogs blogs = new Blogs(); blogs.AddBlog(new BlogElement(" ")); blogs.AddBlog(new BlogElement(" ")); blogs.AddBlog(new BlogElement(" ")); blogs.AddBlog(new BlogElement(" ")); Visitor webVisit = new WebVisitor(); Visitor wapVisit = new WapVisitor(); blogs.Accept(webVisit); blogs.Accept(wapVisit); Console.ReadLine(); } }
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
디자인 모델 의 공장 모델, 단일 모델자바 는 23 가지 디자인 모델 (프로 그래 밍 사상/프로 그래 밍 방식) 이 있 습 니 다. 공장 모드 하나의 공장 류 를 만들어 같은 인 터 페 이 스 를 실현 한 일부 종 류 를 인 스 턴 스 로 만 드 는 것...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.