본문 바로가기

분류 전체보기

(156)
List (ArrayList, LinkedList, Vector) 리스트 (List) 순열(sequence)라고도 불리며, 순서를 가지고 일렬로 나열한 원소들의 모임이다.순서가 있다는 점에서 집합과는 구별되며, 갈림길 없이 일렬로 나열되어 처음과 끝이 각각하나씩만 있다는 점에서 트리나 그래프와도 구별된다. 》》 저장공간이 정해져있지 않으므로 필요에 의해 자동으로 늘어난다.》》 중복이 있고, 순서가 있다. 자바에서는 List자료구조를 크게 ArrayList, LinkedList, Vector 로 세분화할 수 있다. ※ ArrayList객체 내부에 있는 배열에 데이터를 저장한다.ArrayList arraylist = new ArrayList(); 》》 ArrayList 정렬Collections.sort(this); // 올림차순Collections.sort(this, Co..
커맨드 패턴 (Command Pattern) 커맨드 패턴 (Command Pattern) 요구사항을 객체로 캡슐화 할 수 있으며, 매개변수를 써서 다른 요구사항을 집어넣을 수도 있다.또한 요청내역을 큐에 저장하거나 로그를 기록할 수도 있고 작업 취소 기능도 지원 가능하게 한다. 》》 작업 요청을 객체의 형태로 캡슐화 하는 것이 가장 큰 목적이다.》》 즉, 커맨드 패턴을 사용하면 작업을 요청한 곳과 그 작업을 처리한 곳을 분리시킬 수 있다. ※ 커맨드패턴의 구조 클라이언트 : 커맨드 객체를 생성하고 인보커를 통해 리시버에 전달하여 요청한다.인보커 : 클라이언트의 커맨드 객체를 리시버에 전달한다.리시버 : 요청대로 특정 행동을 수행한다. 커맨드 : 어떠한 특정 행동을 담고 있는 추상 객체이다. 이를 식당에 비유하여 쉽게 설명하자면.... 클라이언트 -..
Map (HashMap, Hashtable, TreeMap) Map 이진 탐색 트리를 기반으로 두개의 자료형을 동시에 저장하도록 만든 자료구조이다. List와 Set이 순서나 집합적인 개념의 인터페이스라면 Map은 검색의 개념이 가미된 인터페이스이다.Map 인터페이스는 데이터를 삽입할 때 Key와 Value의 형태로 삽입되며, Key를 이용해서 Value를 얻을 수 있다. ※HashMapHashMap은 Map 인터페이스를 구현한 클래스로서 중복을 허용하지 않는다. Map의 특징인 Key와 Value의쌍으로 이루어져있다.Map hashmap = new HashMap(); ※HashtableHashMap과 동기화를 보장하냐 안하냐의 차이외에는 거의 동일한 자료구조라고 볼 수 있다.Hashtable hashtable = new Hashtable(); ※TreeMapHa..
싱글톤 패턴 (Singleton Pattern) 싱글톤 패턴 (Singleton Pattern) 싱글톤 패턴은 해당 클래스의 인스턴스가 하나만 만들어지고, 어디서든지 그 인스턴스에 접근할 수 있도록 하기위한 패턴이다. 》》 단 하나의 유일한 객체를 만들기 위한 디자인 패턴 여기서 중요한 것은 인스턴스가 단 하나만 만들어지고, 어디서든지 접근가능하게 한다는 점이다 !어디서 필요할까 ?정의를 살펴보면 알 수 있듯이 프로그램 상에서 객체가 하나만 필요할 때 사용된다.ex. 환경설정 관리 또는 로그관리, 동일한 DB커넥션 생성 → 여러 인스턴스가 존재할 필요가 없다!싱글톤 패턴 대신 전역 변수에 객체를 대입해서 사용해도 되지 않을까? 전역 변수에 객체를 대입하면 프로그램이 시작될 때 객체가 생성된다. 그런데 만약 프로그램이 끝날때까지그 객체를 한번도 쓰지 않..
추상 팩토리 패턴 (Abstract Factory Pattern) 추상 팩토리 패턴 (Abstract Factory Pattern) 추상 팩토리 패턴에서는 인터페이스를 이용하여 서로 연관된 또는 의존하는 객체를구상클래스를 지정하지 않고도 생산할 수 있다. 추상 팩토리 패턴을 이용해서 코드를 구성하면 클라이언트에서는 실제로 어떤 객체가 생산되는지 전혀 알 필요가 없게된다.이렇게 클라이언트와 객체 생성을 분리시키는 것을 추상 팩토리 패턴이라고 한다. 여기서 중요한 것은 인터페이스를 이용하여 생산한다는 점이다. 추상 팩토리패턴과 팩토리 메소드 패턴의 차이점은?두가지 패턴 모두 객체를 생성하는 일을 하지만,팩토리 메소드 패턴은 상속을 이용해서 객체를 생성하고, 추상 팩토리 패턴은 객체 구성을 이용하여 객체를 생성한다는 점이다.
팩토리 메소드 패턴 (Factory Method Pattern) TestClass test = new TestClassA(); 여기서 new는 무엇일까 ? new를 사용한다는 것은 구상 클래스의 인스턴스를 만들겠다는 뜻이다. 그렇다면 만약 다음과 같은 상황을 가정해보자. TestClass test; if(A){test = new TestClassA();}else if(B){test = new TestClassB();}else if(C){test = new TestClassC();}else if ..... 일련의 구상클래스들이 있을 때는 어쩔 수 없이 위와 같은 코드를 만들어야 하는 경우가 있다.이렇게 코드를 짜게되면 나중에 변경하거나 확장할 때 어려움을 겪는다. 문제가 "new"에 있는걸까?new 자체에 문제가 있는 것은 아니다. 문제가 있는건 바로 "변화" 때문.인..
데코레이터 패턴 (Decorator Pattern) 데코레이터 패턴 (Decorator Pattern) 주어진 상황 및 용도에 따라 어떤 객체에 기능을 덧붙이는 패턴이다.기능 확장이 필요할 때 서브 클래싱 대신 쓸 수 있는 유용한 대안이다. 》》 동적으로 객체의 추가적인 기능들을 가진 객체를 덧붙여 꾸밀 수 있다. 여기서 중요한 디자인 원칙 중 하나를 알아야한다. OCP(Open-Closed Principle) 란? OCP는 가장 중요한 디자인 원칙 가운데 중 하나.클래스는 확장에 대해서는 열려있어야하지만 코드 변경에 대해서는 닫혀 있어야 한다. 》》 기존 코드는 건드리지 않은 채로 확장을 통해서 새로운 행동을 추가하는 것이 목표 ! 데코레이터 패턴 사용법 1. 메인 클래스를 생성한다. 2. 메인 클래스의 객체를 꾸밀 수 있는 서브 클래스의 데코레이터 타..
옵저버패턴 (Observer Pattern) 옵저버 패턴 (Observer Pattern) 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들에게 연락이 가고 자동으로 내용이 갱신되는 방식을 말한다. 》》 1 : N (다) 의 의존성으로 정의 》》 일방적 통지방식의 패턴 》》 주체는 특정 데이터를 감시하고 있다가 변화를 감지한다. 옵저버 객체는 언제든지 삭제, 추가가 가능하며 옵저버 객체에서 삭제가 되면 주체의 새로운 값을 받을 수 없게된다. 여기서 주체와 옵저버 객체는 느슨하게 결합되어있다.느슨하게 결합되어있다는 것은 상호작용을 하긴 하지만 서로에 대해 잘 모른다는 것을 뜻한다. 》》 주체가 옵저버에 대해서 아는 것은 옵저버거 특정 인터페이스를 구현한다는 것뿐 》》 느슨하게 결합되어있는 디자인을 사용하면 변경사항이 생겨도 무난히 처리 가능 ..