728x90 반응형 객체지향40 2021.12.11_데코레이터패턴01.패턴소개 기존에 있는 코드를 변경하지 않고 부가적인 기능 추가할 수 있는 구조적인 패턴 원하는 부가 기능 런타임에 다이나믹 하게 추가 스태틱하게 컴파일 타임에 아니구....(정적) 유연하게 라면 런타임에 변경 할 수 있음 런타임의 기본을 확장하는 개념임 코드 pulic class Client{ private Client(CommentService); public Client (CommentService commentService){ this.CommentService = commentService; } private void writeComment(String comment){ Comment.Service.addComment(comment); } publiv static void main(String[] args.. 2021. 12. 11. 2021.12.09_컴포짓패턴04.자바와스프링에서찾아보는패턴 package me.whiteship.designpatterns._02_structural_patterns._08_composite._03_java; import javax.swing.*; public class SwingExample { public static void main(String[] args) { JFrame frame = new JFrame(); JTextField textField = new JTextField(); textField.setBounds(200, 200, 200, 40); frame.add(textField); JButton button = new JButton("click"); button.setBounds(200, 100, 60, 40); button.addAction.. 2021. 12. 9. 2021.12.09_컴포짓패턴03.장점과단점 장점 복잡한 트리구조를 편리하게 사용가능 어디에 해당하는지 상관 없이 공통된 인터페이스를 구현하고 있으면 그 인터페이스로 활용가능 다형성, 재귀 가능 클라이언트 입장에서 새로운 컴포짓, 리프가 새로 생겨도 클라이언트 코드는 바뀌지 않음 확장에는 열려있고, 변경에는 닫혀있는 원칙에 해당 단점 코드의 경우 아이템, 가방이라는 공통된 오퍼레이터가 있어서 간단했지만 공통된 것을 찾기 힘들고 그것을 일반화를 억지로 해야할 수 있는데 그런점이나 런타임시 타임을 생각해야할 수 있으니 그때는 너무 특정 패턴으로 종속하는게 아닌지 생각해야함 2021. 12. 9. 2021.12.09_컴포짓패턴02.패턴적용하기 지난 코드 베이스 컴포짓 적용하기 Component public interface Component{ int getPrice(); } 공통된 오퍼레이션이 정의되어야하는것이 핵심 Item public class Item implements Component{ private String name; private int price; public Item(String name, int price){ this.name = name; this.price = price; } @Override public int getPrice(){ return this.price; } } Bag before 앞에서 말한것 처럼 leaf타입을 참조하면 안되고 compoent를 참조해야함 그래서 아래와 같이해야함 public Bag i.. 2021. 12. 9. 이전 1 2 3 4 5 6 7 8 ··· 10 다음 728x90 반응형