'컴포짓' 태그의 글 목록
본문 바로가기
728x90
반응형

컴포짓4

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.
2021.12.09_컴포짓패턴01.패턴소개 컴포짓 전체 계층구조와 그리고 그 계층구조를 구성하는 부분적인 객체를 클라이언트 입장에서 동일하게 생각할 수 있게 전체인지 전체의 부분인지 , 하위 단에 있는 것인지(트리의 마지막 오브젝트인지) 상관없이 동일한 인터페이스로 사용하게 하는것 트리 구조로 구성해야하는 제약 사항이 있음 그래서 그렇게 많이 쓰이지 않을까 하지만, 일상에 트리 구조가 많음 디자인패턴이 아니라 자료구조에 트리구조 공부하는 이유는 다양하게 구성할 수있는것이 많고 소프트엔지니어에서도 많이 사용할 수 있음 소스 코드 이렇게 하면 클라이언트가 많은것을 알아야함 객체지향적으로 옳은 것인지 고민이 되고 , 캐릭터가 아이템을 가지고 있는데 그것을 어떻게 디테일한것을 클라이언트가 알아야만 개수나 합을 알 수 있는 것인지 고민해야함 public .. 2021. 12. 9.
728x90
반응형