JAVA: 282개의 글
팩토리 메서드 패턴 팩토리 메서드 패턴에서는 상위 클래스에서 처리의 골격을 만들고, 하위 클래스에서 구체적인 처리의 내용을 만들었다. 이 패턴을 인스턴스 생성의 장면에 적용한 것이 바로 팩토리 메서드 패턴이다. factory는 공장이라는 의미이다. 인스턴스를 생성하는 공장을 템플릿 메서드 패턴으로 구성한 것이 팩토리 메서드 패턴이다. 즉, 팩토리 메서드 패턴을 사용하면 객체 생성 기능을 제공하는 Factory 클래스를 정의하고 이를 활용하는 방식으로 설계하면 된다.펙토리 메서드 패턴에서는 인스턴스를 만드는 방법을 상위 클래스 측에서 결정하지만 구체적인 클래스 이름까지는 결정하지 않는다. 따라서 인스턴스 생성을 위한 골격과 실제의 인스턴스 생성의 클래스를 분리해서 생각할 수 있다.cp.) 팩토리 메서드 패..
템플릿 메서드 패턴 Templete Method 패턴은 템플릿의 기능을 가진 패턴이다. 상위 클래스 쪽에 템플릿에 해당하는 메서드가 정의되어 있고, 그 메서드의 정의 안에는 추상 메서드가 사용되고 있다.따라서 상위 클래스의 프로그램만 보면 추상 메서드를 어떻게 호출하고 있는지 알 수 있지만, 최종적으로 어떤 처리가 수행되는지는 알 수 없다.추상 메서드를 실제로 구현하는 것은 하위 클래스이다. 하위 클래스 측에서 메서드를 구현하면 구체적인 처리가 결정된다. 서로 다른 하위 클래스가 서로 다른 구현을 실행하면 서로 다른 처리가 결정된다. 서로 다른 하위 클래스가 서로 다른 구현을 실행하면 서로 다른 처리가 실행될 것이다.그러나 어떤 하위 클래스에서 어떤 구현을 하더라도 처리의 큰 흐름은 상위 클래스에서 결정..
프록시 패턴 proxy는 대리인이라는 의미이다.대리인이란 일을 해야 할 본인을 대신(대리)하는 사람이다. 본인이 아니라도 가능한 일을 맡기기 위해서 대리인을 세운다.대리인은 어디까지나 대리에 지나지 않기 때문에 할 수 있는 일에는 한계가 있다.대리인이 할 수 있는 범위를 넘는 일이 발생하면, 대리인은 본인한테 와서 상담을 한다.오브젝트(객체) 지향에서는 '본인'도 '대리인'도 오브젝트(객체)가 된다. 바빠서 일을 할 수 없는 오브젝트 대신에 대리인 오브젝트가 어느 정도 일을 처리하게 된다. ▶ 등장인물 이름 해설 Printer 이름있는 프린터를 나타내는 클래스(본인) Printable Printer와 PrinterProxy 공통의 인스턴스 PrinterProxy 이름있는 프린터를 나타내는 클래스(대리인)..
싱글턴 패턴 프로그램을 실행할 때 보통은 많은 인스턴스가 생성된다. 예를 들어 문자열을 표시하는 java.lang.String 클래스의 인스턴스는 문자열 1개에 대해서 1개가 생성되기 때문에 문자열이 1000개 등장하는 프로그램이라면, 1000개의 인스턴스가 만들어진다.그러나 클래스의 인스턴스가 단 하나만 필요한 경우도 있다. 그것은 시스템 안에서 1개밖에 존재하지 않는 것을 프로그램으로 표현하고 싶을 때이다.즉, 지정한 클래스의 인스턴스 절대로 1개 밖에 존재하는 않는 것을 보증하고 싶을 때 사용한다. Singleton이란 요소를 1개 밖에 가지고 있지 않은 집합을 의미한다. Sington 클래스에서는 인스턴스를 1개 밖에 만들 수 없으며, sington은 static 필드로서 Singleton 클래스..
디자인 패턴의 분류 많은 디자인 패턴을 크게 범주별로 분리를 할 수 있다.범주별로 분리를 해보면서 패턴의 특징을 쉽게 파악할 수 있다. 1. 생성, 행동, 구조 관련 패턴으로 분류 - 생성 관련 패턴 (Creational Pattern) : 객체 인스턴스 생성을 위한 패턴으로, 클라이언트와 그 클라이언트에서 생성해야 할 객체 인스턴스 사이의 연결을 끊어주는 패턴 싱글턴, 팩토리 메소드, 추상 팩토리, 프로토타입, 빌더 패턴 - 행동 관련 패턴 (Behavioral Pattern) : 클래스와 객체들이 상호작용하는 방법 및 역할을 분담하는 방법과 관련된 패턴 스트래티지, 옵저버, 스테이트, 커맨드, 이터레이터, 템플릿 메소드, 인터프리터, 미디에이터, 역할 변경, 메멘토, 비지터 - 구조 관련 패턴 (St..
객체지향 모델링 1. 모델링의 역할(1) 서로의 해석을 공유해 합의를 이루거나 해석의 타당성을 검토한다.(2) 현재 시스템 또는 앞으로 개발할 시스템의 원하는 모습을 가시화한다.(3) 시스템의 구조와 행위를 명세할 수 있으며 시스템을 구축하는 틀을 제공한다. 2. UML 일반(1) UML 정의- 소프트웨어 청사진을 작성하는 표준언어- 소프트웨어 중심 시스템의 산출물을 가시화하고, 명세화하고,구축하고, 문서화하는데 사용- 가시화 언어 : UML은 소프트웨어의 개념모델을 가시적인 그래픽 형태로 작성하여 참여자들의 오류없고 원활한 의사소통이 이루어지게 하는 언어- 명세화 언어 : UML은 소프트웨어 개발과정인, 분석, 설계, 구현 단계의 각 과정에서 필요한 모델을 정확하고 완전하게 명세할 수 있게하는 언어- ..
@SuppressWarning 언젠가부터 자꾸자꾸 여기저기에 이클립스가 권해주는 어노테이션이죠. 이건 컴파일러가 일반적으로 경고하는 내용 중 "이건 하지마"하고 제외시킬 때 쓰입니다. 따라서 어떤 경고를 제외시킬지 옵션을 줄 수 있어요. 몇 가지 정리해보면 1. all : 모든 경고를 억제 2. cast : 캐스트 연산자 관련 경고 억제 3. dep-ann : 사용하지 말아야 할 주석 관련 경고 억제 4. deprecation : 사용하지 말아야 할 메소드 관련 경고 억제 5. fallthrough : switch문에서의 break 누락 관련 경고 억제 6. finally : 반환하지 않는 finally 블럭 관련 경고 억제 7. null : null 분석 관련 경고 억제 8. rawtypes : 제네릭..
객체를 제거하는 방법 1. 레퍼런스가 영원히 영역을 벗어남 void A() {School s = new School();}메소드가 종료되면 's' 라는 레퍼런스도 죽어버립니다. 2. 레퍼런스에 다른 객체를 대입 School s = new School();s = new School();레퍼런스 's' 에 새로운 객체를 대입하면 첫번째 객체는 버려집니다. 3. 레퍼런스를 직접 'null' 로 설정 School s = new School();s = null;'s' 를 '해제' 하면 첫번째 객체는 버려집니다.즉 레퍼런스 's' 가 아무 객체도 참조하지 않는 것입니다. 레퍼런스가 참조하지 않는 객체는 가비지 컬렉션의 대상이 되어 자동으로 정리됩니다. 출처: https://devbox.tistory.com/entr..
Wrapper 클래스 Wrapper 클래스라는 것은 그 이름이 의미하듯이 'wrap(포장)'하는 기능의 클래스를 의미한다.이것은 주로 JDK1.5 이전에 많이 쓰였던 기능들인데 설명하자만 기본자료형을 객체자료형으로 변환하기 위해서 사용하는 클래스라고 생각하면 된다. 1. 문제제기Object 타입의 변수는 모든 객체형 자룔를 표현할 수 있지만, int나 byte와 같은 기본형 자료는 선언할 수 없다.Object a = 123; //컴파일오류 2. 문제를 일으키는 경우- 변수의 최초 선언- 메소드의 파라미터, 리턴타입- 배열과 같은 자료구조 3. 기본형 자료를 객체형 자료로 처리하기 위한 클래스기본자료형 Wapper 클래스 byteByte 클래스short Short 클래스int Integer 클래스 long..
예외 던지기 1. 예외 되던지기 한 메서드에서 발생할 수 있는 예외가 여럿인 경우, 몇 개는 try-catch문을 통해서 메서드 내에서 자체적으로 처리하고, 그 나머지는 선언부에 지정하여 호출한 메서드에서 처리하도록 함으로써, 양쪽에서 나눠서 처리되도록 할 수 있다. 그리고 심지어는 단 하나의 예외에 대해서도 예외가 발생한 메서드와 호출한 메서드, 양쪽에서 처리하도록 할 수 있다.이것은 예외를 처리한 후에 인위적으로 다시 발생시키는 방법을 통해서 가능한데, 이것을 '예외 던지기'이라고 한다.먼저 예외가 발생한 가능성이 있는 메서드에서 try-catch문을 사용해서 예외를 처리해주고 catch문에서 필요한 작업으로 행한 후에 throw문을 사용해서 예외를 다시 발생시킨다.다시 발생한 예외는 이 메서드를 호..