본문 바로가기

자바8

템플릿 메소드 패턴 Template Method Pattern 템플릿(Template)은 형판, 형틀이라는 뜻을 가지고있습니다. 형판이라는 것은 어떤 것을 만들기 위해서 미리 모양을 새겨 놓은 판을 말합니다. 1. 템플릿 메소드 템플릿이 형틀이라는 의미를 갖고 있듯이, 템플릿 메소드 패턴은 특정 기능을 형틀처럼 캡슐화 하여 이용하는 기능입니다. 이때 템플릿을 추상클래스로 정의하여 하위클래스에서 상속하여서 이용하게 됩니다. 이처럼 추상화시키는 메소드들은 공통된 알고리즘이나 구조를 추상화 시키게 됩니다. 2. 템플릿 메소드 구현하기 쿠키 가게가 있습니다. 이 가게에서는 초코 쿠키와 시나몬 쿠키를 판매하는데 다음과 같은 방식으로 제조를 합니다. public class ChocolateCookie { public void orderCookie(){ knead(); baki.. 2021. 9. 23.
커맨드 패턴 Command Pattern 이번에 소개할 패턴인 커맨드 패턴은 특정 기능을 캡슐화 시키는 패턴입니다. 1. 커맨드 패턴 소개 커맨드 패턴은 서론에서 이야기 했듯이 특정 기능들을 캡슐화 시키는 패턴입니다. 그래서 보통 매개변수를 이용해서 기능에 다른 요구 사항들을 넣을 수 있게됩니다. 예를 들어 전원을 켜는 기능이 있다고 할 때, 매개변수로 티비냐 컴퓨터냐에 따라 같은 전원을 켜는 기능이라 하더라도 티비를 키거나 컴퓨터를 키는 등의 동작이 가능해집니다. 커맨드 패턴에서는 크게 Invoker(이하 인보커, 호출자), Receiver(이하 리시버, 수신자), Command(이하 커맨드, 명령) 객체로 구분됩니다. 인보커는 기능의 실행을 요청하고 리시버는 명령을 수행하는 객체입니다. 2. 커맨드 패턴 구현 2-1. 커맨드 객체 구현 커맨.. 2021. 9. 15.
싱글턴 패턴 Singleton Pattern 이번에 소개드릴 패턴은 싱글턴 패턴입니다. 1. 싱글턴 패턴 싱글턴 패턴은 이름에서 single;하나의 라는 의미가 들어가 있듯이 하나의 인스턴스 생성을 위한 패턴입니다. 즉, 단 한번의 객체 생성을 보장하는 패턴입니다. 처음들을때는 객체 생성을 단 한번만 한다니까 의미없고 이상해보입니다. 하지만 생각해보면 의외로 단 하나의 객체 생성만을 보장해야 하는 경우가 꽤 있습니다. 대표적으로 설정을 저장하는 객체가 있습니다. 설정은 사용자가 단 하나의 설정을 이용하죠. 만약에 설정이 여러개라면 설정끼리 충돌하는 상황이 발생하기 때문에 이런 설정 객체 같은 경우 단 하나의 인스턴스 생성을 보장해야합니다. 2. 싱글턴 패턴 구현 싱글턴 패턴은 여태까지의 패턴과는 다르게 구현 전에 잠시 생각해 봐야할 것들이 있습니다.. 2021. 9. 13.
팩토리 패턴 Factory Pattern 이번에 소개할 패턴은 팩토리 패턴입니다. 1. 들어가기전에 들어가기전에 new라는 키워드를 집고 넘어가려고 합니다. 갑자기 디자인 패턴하다가 new라는 키워드설명을 왜 하나요 싶겠지만, 팩토리 패턴과 밀접한 관련이 있습니다. 우리가 객체를 생성할때 보통 [객체 객체명 = new 객체생성자]와 같은 방식으로 new를 이용했습니다. 여기서 new라는 것은 생성자를 통해 객체의 인스턴스를 생성하는 것인데요. 이렇게 생성한다는 것은 구체적으로 작성된 클래스를 통해 구현을 한다는 의미입니다. 그래서 객체와 관련한 수정이 발생하면 일일히 관련 코드들을 고쳐야하기에 유지보수면에서 좋지 못한 모습을 보입니다. 그래서 우리는 new 대신에 다른 방식을 이용하는 것을 생각해야합니다.(당연히 무조건 new를 통한 객체 생성.. 2021. 9. 9.
데코레이터 패턴 Decorator Pattern 이번에 소개할 패턴은 데코레이터 패턴입니다. 데코레이터 패턴은 Structural Pattern에 속합니다. 1. 데코레이터 패턴 소개 어디선가 한 번쯤은 "데코레이션"이라는 말을 들어봤을 것입니다. 케이크 위에 과일이나 장식을 얹는 것, 음료에 가니쉬나 다양한 첨가물을 넣는 것들을 우리는 데코레이션 이라고 합니다. 이처럼 한 객체 위에 기능들을 입혀서 사용 목적에 걸맞는 객체로 만드는 것을 데코레이션 패턴이라고 합니다. 예를들면, 케이크 빵위에 생크림을 바르면 생크림 케이크, 초코를 바르면 초코 케이크가 되고, 같은 생크림 케이크 라도 과일을 올릴 수도 있고, 초코를 올릴 수도 있죠. 심지어는 같은 장식(기능)이라도 케이크 빵대신 베이글을 넣을 수도 있습니다. 이처럼 각기 다른 베이스를 가지고 장식을 .. 2021. 9. 2.
[Data Structure] 연결 리스트 구현 연결 리스트에는 단순, 원형, 이중 연결리스트 등이 존재합니다. 오늘은 이 중 첫 번째인 단순 연결 리스트를 구현해보도록 하겠습니다. 1. 노드 생성 우선 제일 먼저 할 일은 노드를 생성하는 부분을 구현하는 것 입니다. 지난 포스트에서 소개한 노드의 구조를 보면 다음과 같이 데이터와 링크 필드 두가지로 구현되어 있습니다. public class LinkedList { private class Node { //노드 private Object data;//데이터 필드 private Node next;//링크 필드 public Node(Object input) { this.data = input; this.next = null; } } //첫 번째 노드 private Node head; //마지막 노드 pri.. 2021. 6. 28.
300x250