전체 글 111

Design Pattern 디자인패턴 Prototype Pattern 프로토타입 패턴

Prototype Pattern 프로토타입 패턴 객체를 복사해야 하는 경우에 사용되는 디자인 패턴입니다. 예를 들어 DB 작업이 많은데, 객체를 저장해야 한다고 하면, 프로토타입 패턴을 이용해 객체를 복사(캐싱) 해놓은 뒤, DB가 여유있을 때 (?) 객체를 저장할 수 있도록 하는데 사용됩니다. 프로토타입 패턴에서 보통 객체를 복사하는 역할을 맡은 Interface는 clone 메소드 하나만 가집니다. 프로토타입 패턴의 사용 객체의 생성 방법이 시스템과 독립적이어야 하는 경우 ( 클래스 상속 구조와 팩토리(객체 생성 패턴) 구조가 동일한 것을 피하기 위해서) 객체의 인스턴스 생성/변형이 런타임에서 일어나야 하는 경우 ( 객체가 몇가지 상태 표현을 갖는 경우 매번 적절한 상태로 인스턴스를 수동으로 변화시키..

JAVA/DesignPattern 2021.12.15

Design Pattern 디자인 패턴 Builder Pattern 빌더 패턴

Builder Pattern 빌더 패턴 생성자를 이용해 객체를 생성할 때 더 편리하게 해주는 디자인 패턴입니다. 객체의 구성요소(변수)가 많은 경우, 객체 생성자의 input 요소가 많은 경우에는 아래와 같이 생성자가 길어지고 복잡하게 됩니다. 이런 경우 어느 한 요소가 빠지게 되거나, 요소의 순서가 뒤바뀐 경우 에러를 찾아내기가 어려워집니다. 또는 구성요소가 없어지거나, 추가 될때마다 새로운 생성자를 만들어주어야 합니다. 이런 불편함을 해소하고, 객체를 생성할 때 input 요소를 하나씩 넣어줄 수 있도록 해주는 패턴이 빌터 패턴입니다. public class Object{ private String a; private String b; private String c; private String d; ..

JAVA/DesignPattern 2021.12.15

Design Pattern 디자인패턴 Singleton Pattern 싱글톤 패턴

싱글톤 패턴 Singleton Pattern 객체가 한 개만 생성될 수 있도록 관리하는 패턴입니다. 인스턴스 객체를 생성할 필요 없이 바로 객체에 접근할 수 있는 기능을 제공합니다. 싱글톤 패턴의 장단점 장점 객체를 하나만 생성해서 관리할 수 있습니다. 어디서든지 객체에 접근할 수 있도록 할 수 있습니다. 최초 호출 시에만 객체를 생성합니다. 단점 멀티 스레드 환경에서 객체를 여러번 생성하지 않도록 별도의 조치가 필요합니다. 프레임워크에서는 보통 상속에 의존해 객체를 생성하기 때문에 싱글톤 패턴을 적용하고 테스트하는 것이 어려울 수 있습니다. 싱글톤 패턴을 이용하면, 캡슐화가 깨진 나쁜 설계가 드러나지 않을 수도 있습니다. * 캡슐화 : 객체지향 언어에서 객체의 속성과 행위를 외부에서 접근할 수 없도록 ..

JAVA/DesignPattern 2021.12.14

Design Pattern 디자인 패턴 Abstract Factory Pattern 추상 팩토리 패턴

추상 팩토리 패턴 추상 팩토리란 여러 팩토리를 하나로 묶는 상위 팩토리를 말합니다. (자식 클래스를 갖는 추상 클래스를 말합니다). 2021.12.07 - [JAVA/JAVA] - Design Pattern 디자인 패턴 Factory Pattern 팩토리 패턴 Design Pattern 디자인 패턴 Factory Pattern 팩토리 패턴 팩토리 Factory 란? 팩토리는 객체의 생성만을 전담하는 객체입니다. Interface를 구현한 클래스가 여러 개인 경우 외부에서 각 상황에 맞는 클래스를 찾아 인스턴스를 생성해주어야 하는 불편함을 mantaray.tistory.com 추상 팩토리 패턴 구현 예시 스마트폰 객체를 생성하는 추상 팩토리인 스마트폰 Factory가 있습니다. 그리고 스마트폰 Factor..

JAVA/DesignPattern 2021.12.13

상속과 합성 Inheritance And Composition

상속 Inheritance 상속이란 부모 클래스의 기능을 자식 클래스에서 재사용하는 것을 말합니다. 코드의 중복을 줄이고, 재사용성을 높이기 위해 자바에서 사용하는 기능입니다. 상속의 문제점 불필요한 기능 상속 자식 클래스에는 적합하지 않은 메소드가 상속되는 문제입니다. 예를 들어서 위의 그림에서 고양이 클래스에 "빗질하다"라는 메소드가 있다고 가정해봅니다. 그러면 자식 클래스인 "스핑크스"에서도 "빗질하다"라는 메소드를 사용할 수 있습니다. 하지만 털이 없는 스핑크스에게 "빗질하다"는 적합하지 않은 메소드입니다. 부모 클래스의 기능 변경에 자식 클래스가 영향을 받음 부모 클래스의 기능을 자식 클래스에서 사용하고 있는 경우, 부모 클래스의 기능이 변경된다면, 그 기능을 사용하고 있는 자식 클래스의 기능에..

JAVA/Architecture 2021.12.10

MYSQL Partition 파티션 키와 테이블

파티션 partition 파티션이란, 하나의 테이블에 데이터가 많을 때, 특정 칼럼을 기준으로 분할하는 것을 말합니다. row을 그룹핑하여 분할하는 것을 수평적 분할(horizontal partitioning)이라고 합니다. 파티션 종류 범위(Range) 파티셔닝 칼럼 1개를 기준으로 범위조건 (less than)을 이용해 파티셔닝 하는 것을 의미합니다. 예를 들어 날짜가 2021.01.01~2021.01.31인 데이터와 2021.02.01~2021.02.28 데이터로 분리하는 것을 의미합니다. 범위조건 칼럼으로는 INT만 사용 가능합니다. DATE, DATETIME 등을 사용하려면 INTEGER로 변환하여 사용하여야 합니다. (ex) YEAR(date) CREATE TABLE employees ( id..

DB/SQL 2021.12.08

Design Pattern 디자인 패턴 Factory Pattern 팩토리 패턴

팩토리 Factory 란? 팩토리는 객체의 생성만을 전담하는 객체입니다. Interface를 구현한 클래스가 여러 개인 경우 외부에서 각 상황에 맞는 클래스를 찾아 인스턴스를 생성해주어야 하는 불편함을 해결해주는 패턴입니다. 즉 Factory에서 각 상황에 맞는 클래스를 찾아서 객체를 생성해주도록 합니다. 팩토리 Factory 패턴 사용 클래스가 만들어야 하는 개체 유형(타입)을 미리 알 수 없는 경우 클래스를 특정하기 위한 서브 클래스가 필요한 경우 복합한 클래스 구조를 단순화하기 위한 경우 팩토리 패턴 구현 예시 아래와 같이 애완동물을 생성하는 기능을 담당하는 객체를 Factory라고 합니다. 애완동물을 생성하려고 한다면 아래와 같이 new를 이용해서 생성해주어야 합니다. 애완동물 꾼이 = new 애..

JAVA/DesignPattern 2021.12.07

인터페이스

인터페이스란? 완벽한 추상 클래스 : 모든 메소드가 추상 메소드 (abstact method)로 이루어져 있는 클래스 interface Animal { public void animalSound(); // interface method (does not have a body) public void run(); // interface method (does not have a body) }* 추상 메소드 : 정의만 되어있는 메소드로 실제 기능을 구현되어 있지 않은 것을 의미. 인터페이스의 역할 다형성을 구현할 수 있다. 인터페이스를 사용하면 메소드를 호출할 때, 인터페이스의 구조만 알면 되고, 객체 각각의 내부 구현에 대해서는 알 필요가 없어진다. * 다형성이란 동일한 요청을 받았을 때 객체의 타입에 따라..

JAVA/JAVA 2021.11.30

깃 Git 명령어

초기화 git init 내용 commit할 문서 추가하기 git add index.html 커밋 git commit -m "feat(My project refactoring)" -ammend 상태 확인 git status commit 로그 확인 git log --oneline 새로운 branch 생성하기 git branch newBranchName branch 목록 보기 git branch -a branch delete 브랜치 삭제하기 git branch -d branchname branch 이동하기 convert branch git checkout branchName pull git pull pull 실행 후 fatal: refusing to merge unrelated histories가 뜬다면 gi..

기타/잡동사니 2021.11.14

Optional

Optional Class Optional 클래스는 스트림에서 Null Pointer Exception을 피할 수 있도록 도와주는 클래스입니다. Optional로 특정 클래스를 감싸서 사용합니다. 이렇게 하면 Optional 클래스 안에 MyClass가 담겨있는 모양이 됩니다. ① Null 값이 들어온 경우 Null을 대체할 수 있는 Default 값을 설정할 수 있습니다. ② 값이 없을 경우에는 Optional을 Null이 아닌 Empty 상태로 반환하여 처리합니다. private Optional soundcard; public Optional getSoundcard() { ... } Optional 객체 생성하기 ① emtpy : Empty 상태로 Optional 객체를 생성하기 Optional sc..

JAVA/JAVA 2021.11.07