'C#' 태그의 글 목록 (2 Page)
본문 바로가기
728x90
반응형

C#50

22.03.02_템플릿메소드패턴_자바와스프링에서찾아보는패턴 01.자바 public class TemplateInJava{ public static void main(String[] args){ HttpServlet httpServlet; } } // 사용 public class MyHello extends HttpServlet{ @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException{ super.doGet(req, resp); } protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOEx.. 2022. 3. 3.
22.03.02_템플릿메소드_장단점 01.템플릿 메소드 패턴 장점 템플릿 코드를 재사용하고 중복 코드를 줄일 수 있음 템플릿 코드를 변경하지 않고 상속을 받아서 구체적인 알고리즘만 변경할 수 있음 open close principle, single responsibility principle을 만족 02.템플릿 메소드 패턴 단점 리스코프 치환 원칙을 위반할 수도 있음 리스코프 치환 원칙은 상속 구조에서 상위클래스 타입으로 사용하는 코드에서 그 코드를 그 상위 타입말고 그 상위 타입을 상속받은 모든 그 어떠한 임의의 클래스로 바꾸더라도 코드가 의도한대로 동작해야한다는것 그 부모가 가진 의도를 그대로 해야하는것 여기서는 final을 이용해서 오버라이드 못하게 한다면 어느정도 리스코프 치환 원칙을 막을 수 있지만 추상 메소드 자체를 변경하면 사.. 2022. 3. 3.
22.03.02_템플릿메소드_패턴적용하기 01.템플릿메소드패턴 비슷한 코드인데 조금 몇라인 3-4줄 정도가 다를때 적용하기 좋은 패턴 01.1 Template.java import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; public abstract class FileProcessor{ private String path; public FileProcessor(String path){ this.path = path; } public int process(){ try(BufferedReader reader = new BufferedReader(new FileReader(path))){ int result = 0; String line = null;.. 2022. 3. 3.
22.03.02_템플릿메소드패턴_패턴소개 알고리즘의 구조를 어떤 과정을 알고리즘이라고 하는 그 구조를 읽고 오고 처리하는 처리하는 것을 템플릿으로 제공하고 그중에서 구체적인 방법 제공하는 방법 처리하는 방법 출력하는 방법등을 서브 클래스가 구체적으로 구현할 수 있게 하는 패턴 상속을 사용하고 이패턴이 필요해지는 상황을 소스코드로 보자 public clas Client{ public static void main(String[] args){ FileProcessor fileProcessor = new FileProcessor("number.txt"); int result = fileProcessor.process(); System.out.println(result); } } import java.io.BufferedReader; import ja.. 2022. 3. 3.
728x90
반응형