일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- AWS
- jsp
- ReactJS
- ubuntu
- elasticsearch
- jenkins
- java
- Gradle
- IntelliJ
- Spring
- Design Patterns
- springboot
- javascript
- linux
- db
- tool
- laravel
- Oracle
- devops
- Spring Boot
- it
- Git
- php
- MySQL
- docker
- Web Server
- 맛집
- 요리
- JPA
- redis
- Today
- Total
목록2019/12 (109)
아무거나
추상 팩토리 패턴(Abstract Factory Pattern) 인터페이스를 이용하여 서로 연관된, 또는 의존하는 객체를 구상 클래스를 지정하지 않고도 생성할 수 있다. 제품군을 만들 때를 예로 들어보자. 추상 팩토리 패턴을 사용하면 클라이언트에서 추상 인터페이스를 통하여 일련의 제품들을 공급받을 수 있다. 실제로 어떤 제품이 생산되는지도 전혀 알 필요가 없다. 따라서 클라이언트와 팩토리에서 생산되는 제품을 분리시킬 수 있다. AbstractFactory: 모든 구상 팩토리에서 구현해야 하는 인터페이스이다. 제품을 생산하기 위한 일련의 메소드들이 정의되어 있다. ConcreteFactory1~2: 구상 팩토리에서는 서로 다른 제품군을 구현한다. 클라이언트에서 제품이 필요하면 이 팩토리 가운데 적당한걸 선..
빌더 패턴(Builder Pattern) 개념을 보기 앞서 빌더 패턴 2개를 소개하였는데 첫번째 빌더 패턴은 책에서 나용 내용이고 실질적으로 두번째 빌더 패턴을 많이 사용하므로 두번째를 숙지하는것이 좋다. 빌더 패턴이란 복잡한 단계를 거쳐야 생성되는 객체의 구현을 서브 클래스에게 넘겨주는 패턴 빌더 패턴 예시 - 1 ( 팩토리를 사용한 빌더 패턴 - 책 기준 ) 먼저 복잡한 단계를 거쳐야 생성되는 객체를 Computer라는 객체로 생성해보자. [Computer.java] package com.bkjeon.builder; public class Computer { private String cpu; private String ram; private String storage; public Computer(..
프로토타입 패턴(Prototype Pattern) 복잡한 인스턴스를 복사할 수 있다. 즉, 생산 비용이 높은 인스턴스를 복사를 통해서 쉽게 생성할 수 있도록 하는 패턴 인스턴스 생산 비용이 높은 경우 종류가 너무 많아서 클래스로 정리되지 않는 경우 클래스로부터 인스턴스 생성이 어려운 경우 프로토 타입 패턴 예시 - 1 [요구사항] 일러스트레이터와 같은 그림 그리기 툴을 개발중이다. 어떤 모양(Shape) 그릴 수 있또록 하고 복사 붙여넣기 기능을 구현하자. 모양에 대한 함수를 만들자. [Shape.java] package com.bkjeon.prototype; public class Shape implements Cloneable { private String id; public void setId(St..
싱글톤 패턴(Singleton Pattern) 하나의 인스턴스만 생성하도록 구현 즉, 인스턴스를 하나만 생성해야할 객체를 위한 패턴 싱글톤 패턴 예시 - 1 [요구사항] 개발중인 시스템에서 스피커에 접근할 수 있는 클래스를 만들자. 만약 스피커에 접근할 수 있는 클래스가 하나 이상 예를 들어 100개라고 생각하면 스피커의 볼륨을 올린다면 100개의 클래스를 모두 찾아다니면서 올려줘야 하므로 개발의 복잡도도 올라가고 리소스도 많이 잡아먹는다 그러므로 싱글톤을 사용해야 한다. 스피커에 대한 싱글톤 패턴을 구현하자. [SystemSpeaker.java] package com.bkjeon.singleton; public class SystemSpeaker { // 외부에 접근 안되고 하나만 하기 위해서 stat..
팩토리 메소드 패턴(Factory Method Pattern) 팩토리 메소드 패턴에서 템플릿 메소드 패턴의 사용됨을 알 수 있다. 팩토리 메소드 패턴에서의 구조와 구현의 분리를 이해하고 구조와 구현의 분리의 장점을 안다. 이번 내용은 먼저 코드를 작성하고 구조를 알아야 위의 본문을 이해하기 쉽다. 팩토리 메소드 패턴 예시 - 1 [요구사항] 게임 아이템과 아이템 생성을 구현 아이템을 생성하기 전에 데이터 베이스에서 아이템 정보를 요청 아이템을 생성 후 아이템 복제 등의 불법을 방지하기 위해 데이터 베이스에 아이템 생성 정보를 저장 아이템을 생성하는 주체를 ItemCreator로 이름 정의 아이템은 item 이라는 interface로 다룰 수 있게 한다. item은 use 함수를 기본 함수로 갖고 있다. ..
템플릿 메소드 패턴(Template Method Pattern) 알고리즘의 구조를 메소드에 정의 하고 하위 클래스에서 알고리즘 구조의 변경없이 알고리즘을 재 정의하는 패턴 사용 구현하려는 알고리즘이 일정한 프로세스가 있다. 구현하려는 알고리즘이 변경 가능성이 있다. 단계 알고리즘을 여러 단계로 나눔 ( Abastract Class ) 나눠진 알고리즘의 단계를 메소드로 선언 ( Abastract Class의 operation1() ~ 3() ) 알고리즘을 수행할 템플릿 메소드를 만듬 ( Abastract Class의 templateMethod() ) 하위 클래스에서 나눠진 메소드들을 구현 ( ConcreteClass ) 템플릿 메소드 패턴 예시 - 1 신작 게임의 접속을 구현 requestConnectio..
스트래티지 패턴(Strategy Pattern) 여러 알고리즘을 하나의 추상적인 접근점을 만들어 접근 점에서 서로 교환 가능하도록 하는 패턴 스트래티지 패턴 예시 [요구사항] 신작 게임에서 캐릭터와 무기를 구현해보자. 무기는 두 가지 종류가 있다. 칼 검 먼저 무기 인터페이스를 생성한다. [Weapon.java] package com.bkjeon.strategy; public interface Weapon { public void attack(); } 그 다음 칼과 검의 클래스를 생성한다. [Knife.java] package com.bkjeon.strategy; public class Knife implements Weapon { @Override public void attack() { System...
어댑터 패턴(Adapter Pattern) 클래스의 인터페이스를 사용자가 기대하는 다른 인터페이스로 변환하는 패턴 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 어댑터 패턴은 이름대로 어댑터처럼 사용되는 패턴이다. 220V 를 사용하는 한국에서 쓰던 기기들을, 어댑터를 사용하면 110V 를 쓰는곳에 가서도 그대로 쓸 수 있다. 이처럼, 호환성이 없는 인터페이스 때문에 함께 동작할 수 없는 클래스들이 함께 작동하도록 해주는 패턴이 어댑터 패턴이라고 할 수 있겠다. 이를 위해 어댑터 역할을 하는 클래스를 새로 만들어야 한다. 기존에 있는 시스템에 새로운 써드파티 라이브러리가 추가된다던지, 레거시 인터페이스를 새로운 인터페이스로 교체하는 경우에 코드의 재사..
multi-variable linear regression Linear Regression(선형 회귀) Hypothesis 어떤 문제를 다루기 위해 가설, Hypothesis를 세움 Cost function 해당 hypothesis를 검증하는 단계로써 cost function을 통해 cost를 계산 Gradient descent algorithm cost를 최소화 하기 위해 Gradient descent algorithm 을 사용 이를 통하여 우리는 아래 이미지와 같은 하나의 input, 즉 하나의 변수에 대한 문제를 다루었다. 하나가 아니고 여러개의 input일 경우에는 multi-variable에 대한 문제가 존재 여기서 1개가 있을 경우에는 아래 이미지와 같이 계산하였지만 만약 3개가 있다고 가정하..