전체 글
-
구조패턴 > 데코레이터 *기타/디자인패턴 2021. 2. 11. 10:10
기본 기능 + 여러가지 추가 기능 상속은 강력하지만 상속을 사용한다고 무조건 유연하고, 관리하기 쉬운 디자인이 만들어 지는 것은 아니다. Coffee 라는 추상 클래스의 상속을 통해 다양한 옵션의 커피를 만들려면 엄청나게 많은 수의 클래스를 생성, 관리해야한다. 이런 서브 클래스를 만드는 방식의 상속은 행동이 컴파일시에 완전히 결정되고 모든 서브 클래스가 똑같은 행동을 상속받아 어떤 클래스에서는 불필요한 행동을 가질 수 있다. 하지만 구성을 통해 객체의 행동을 확장하면 실행 중에 동적으로 행동을 설정할 수 있다. 이 기술을 통해 슈퍼 클래스에서는 생각치 못했던 새로운 임무를 기존 코드의 수정없이 개별 객체에 더할 수도 있다. 이는 객체지향 OCP 원칙이기도 하다. 데코레이터는 객체를 "장식" 하는 패턴이..
-
구조패턴 > 컴포지트 *기타/디자인패턴 2021. 2. 11. 10:09
객체들을 트리 구조로 구성해 부분과 전체를 나타내는 계층 구조로 만들 수 있다. 컴포지트 패턴을 이용하면 클라이언트에서 개별 객체와 다른 객체들로 구성된 복합객체(composite) 를 똑같은 방법으로 다룰 수 있다. 부분-전체 계층구조란, 부분들이 모여있지만, 모든 것을 하나로 묶어서 전체로 다룰 수 있는 구조를 말한다. 컴포지트 패턴을 이용하면 객체의 구성과 개별 객체를 노드로 가지는 트리 형태로 객체를 구축할 수 있다. 이런 복합 구조를 사용하면 복합 객체와 개별 객체에 대해 똑같은 작업을 적용할 수 있다. 즉, 대부분의 경우에 복합 객체와 개별 객체를 구분할 필요가 없어진다. 팬케이크하우스, 객체식당, 카페 식당이 병합되고 객체식당의 메뉴 내에 디저트 메뉴도 새로 만들어 끼워넣는다고 해보자. 객체..
-
구조패턴 > 어댑터 *기타/디자인패턴 2021. 2. 11. 10:09
다른 인터페이스로 변환, 호환성 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 사용할 수 있다. * mp3 (MediaPlayer)는 play 를, 새로 나온 mp4(MediaPackage)는 playFile 메서드를 각각 가지고 있는데 mp4가 mp3 의 play 를 사용할 수 있도록 하려면? mp3 를 상속하는 adapter 객체를 만들고 adapter 가 mp4를 구성요소로 가지게 한다. adapter 의 play 를 호출할 때 mp4의 playfile 이 호출되도록 한다. 이전에 사용하던 play에 변화를 주지 않고 새로 나온 mp4의 기능을 호출할 수 있다. public c..
-
EnumBackEnd/자바 2021. 1. 31. 09:38
Enum 은 열거형(enumerated type)이라고 부른다. 열거형은 서로 연관된 상수들의 집합이라고 할 수 있다. Enum 은 class 선언 자리에 enum 을 대신 넣어 아래와 같이 만들 수 있다. public enum Fruits { APPLE,PEACH,BANANA; private Fruits(){ System.out.println("Fruits constructor"); } } Enum 생성자는 private 으로만 선언할 수 있으며, 변수를 선언한 만큼 생성자가 돌아가 아래와 같은 결과가 나온다. public class Test { public static void main(String[] args) { Fruits type = Fruits.APPLE; } } ---------------..
-
예외처리BackEnd/자바 2021. 1. 16. 12:20
오류와 예외 오류(Error) 시스템레벨에서 발생하는 에러로, 컴퓨터 하드웨어의 오동작 또는 고장으로 인한 이상이나 JVM 실행에 문제가 생겼을 경우에 발생한다. 개발자가 미리 예측할 수 없기 때문에 오류에 대한 처리는 하지 않는다. 예외(Exception) 사용자의 잘못된 조작이나 개발자의 잘못된 코딩으로 발생하는 프로그램 오류이다. 예외가 발생하면 프로그램이 종료되는 것을 오류와 동일하지만 예외처리를 통해 프로그램이 정상적으로 작동하게 할 수 있다. 예외 계층 구조 Exception 에는 Checked 와 UnChecked Exception 이 있다. 모든 클래스는 Exception 클래스를 상속받는데, Exception 클래스 자체는 checked exception 이다. Checked Except..
-
Servlet & 스프링 web.xml 설정 (쉽게 따라하는 자바 웹개발 (백기선))BackEnd/스프링 2021. 1. 14. 21:04
https://coding-factory.tistory.com/742 [Web] 서블릿(Servlet)이란 무엇인가? 서블릿 총정리 서블릿(Servlet)이란? 서블릿이란 Dynamic Web Page를 만들 때 사용되는 자바 기반의 웹 애플리케이션 프로그래밍 기술입니다. 웹을 만들때는 다양한 요청(Request)과 응답(Response)이 있기 마련이고 이 coding-factory.tistory.com JSP 프로그래밍 방식 요청받은 파일을 그대로 반환한다. web.xml index.html index.htm index.jsp default.html default.htm default.jsp 서블릿 & JSP 프로그래밍 방식 서블릿 클래스를 등록하고 관련 매핑 정보를 기재한다. 다른 기능을 추가하기 ..
-
인터페이스BackEnd/자바 2021. 1. 9. 12:14
class는 인터페이스를 implments 키워드를 통해 상속받을 수 있다. 하지만 인터페이스가 인터페이스를 상속할 땐 class 끼리 상속하는 것과 동일하게 extends 를 사용한다. - 모든 멤버변수는 public static final 이어야 하며, 이를 생략할 수 있다. - 모든 메서드는 public abstract 이어야 하며, 이를 생략할 수 있다. - 인터페이스는 객체의 타입으로만 사용된다. - 인터페이스에는 추상 메소드만 존재한다. 자바8부터 default, static 으로 method 구현 가능 - 인터페이스의 상수는 private으로 만들 수 없다 자바 9 부터 private method, private static method 가능 interface 안에서 default 와 sta..
-
자바 기초 (패키지, import , classpath, 접근제어자)BackEnd/자바 2021. 1. 1. 14:57
패키지 서로 관련 있는 클래스 또는 인터페이스들을 묶어 놓은 묶음이다. 패키지를 사용해 클래스들이 필요할 때만 사용될 수 있도록 하고, 클래스와 함께 계층적 형태로 사용함으로써 다른 그룹에 속한 클래스들과 충돌을 방지하고 관리를 편하게 한다. 도메인명을 거꾸로 하는 방법을 많이 사용한다. tistory.com - > 패키지명 : com.tistory.seung (seung 은 프로젝트명) import java.lang 을 제외한 다른 패키지의 클래스를 이용하고자 할 때 클래스명 앞에 패키지를 명시하여 사용하는데, 이를 import 를 통해 생략할 수 있다. 파일 상단에 import 패키지명을 쓴다. 또 다른 패키지의 static 메서드를 import static 을 통해 사용할 수 있다. (import ..