'비지터패턴' 태그의 글 목록
본문 바로가기
728x90
반응형

비지터패턴4

22-04-11-비지터패턴-4부-자바와스프링에서찾아보는패턴 01.방문자패턴 적용 사례 01.1 자바 FileVisitor, SimpleFileVisitor AnnotationValueVisitor ElementVisitor package me.whiteship.designpatterns._03_behavioral_patterns._23_visitor._03_java; import me.whiteship.designpatterns._03_behavioral_patterns._23_visitor._02_after.Triangle; import java.io.IOException; import java.nio.file.*; import java.nio.file.attribute.BasicFileAttributes; public class SearchFileVisito.. 2022. 4. 12.
22-04-11-비지터패턴-3부-장점과단점 01.장점 기존의 소스를 수정하지 않고 새로운 기능 추가 가능 디바이스 추가되더라도 기존 디바이스는 변경 안됨 새로운 코드에 대해서만 작성되고 클라이언트 코드 그대로 사용 가능 02.단점 구조가 복잡해서 더블 디스패치를 이해하는것이 어려움 메소드 오버라이딩이 컴파일 타임에 스태틱하게 매핑이 되니까 타입마다 존재해야함 Device 인터페이스에 element가 삭제되거나 추가 되면 많은 수정이 일어나게 됨 https://3dpit.github.io/posts/%EB%B9%84%EC%A7%80%ED%84%B0%ED%8C%A8%ED%84%B4-3%EB%B6%80-%EC%9E%A5%EC%A0%90%EA%B3%BC%EB%8B%A8%EC%A0%90/ 22-04-11-비지터패턴-3부-장점과단점 22-04-11-비지터패.. 2022. 4. 12.
22-04-11-비지터패턴-2부-패턴적용하기 01.비지터패턴 적용하기 01.1 Shape.java before public interface Shape { void printTo(Device device); }// 모든 디바이스에 쓰기 위함 after public interface Shape { void printTo(Phone phone); void printTo(Watch watch); } 01.2 Circle.java before public class Circle implements Shape{ @Override public void printTo(Device device){ if(device instanceof Phone){ System.out.println("print Circle to Phone"); }else if(device ins.. 2022. 4. 12.
22-04-11-비지터패턴-1부-패턴소개 01.사용되는 상황 기존 코드를 건드리지 않고 새로운 기능 추가하는 것 기능을 구현할 때 기존 클래스에 코드를 추가하는데 그럴수 없는 경우가 있고 원치 않는 경우가 있을 수 있음 단일 책임 원칙 (Single responsibility principle)을 지키고 싶고, 책임을 증가시키고 싶지 않는 경우 버그가 생길 수 있어서 그곳에 넣지 않고 분리하고 싶은 경우 그 코드가 가진 특성상 여러 곳에서 사용해야하는 경우나 한곳에 모으고 싶은 경우 02.코드로 확인해보기 02.1 여러디바이스에 추가하고 싶은 경우 기기 마다 달라진다는 가정으로 구현된 디자인 패턴이 적용되지 않은 경우 public interface Device{ } public Phone implements Device{ } public Wat.. 2022. 4. 12.
728x90
반응형