일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- javascript
- java
- ReactJS
- elasticsearch
- it
- springboot
- Gradle
- jsp
- ubuntu
- AWS
- Git
- laravel
- jenkins
- linux
- Design Patterns
- Spring Batch
- redis
- php
- Oracle
- JVM
- devops
- MySQL
- IntelliJ
- db
- 맛집
- 요리
- Spring
- Web Server
- tool
- Spring Boot
- Today
- Total
목록Java & Kotlin (250)
아무거나
get : url값으로 정보가 전송되어 보안에 약함 post : header를 이용해 정보가 전송되어 보안에 강함 1. 서블릿 - Servlet는 java언어를 사용하여 웹 프로그램을 제작하는 것 입니다. [ex 소스] @WebServlet("/HWorld") // url mapping public class HelloWorld extends HttpServlet { // HttpServlet를 상속 private static final long serialVersionUID = 1L; 상속구조순서 Server(interface) -> GenericServlet(abstract) -> HttpServlet - doGet 메소드를 기준으로 Servlet호출 설명 [ex 소스] protected void d..
컴포지트 패턴(Composite Pattern) 객체들의 관계를 트리 구조로 구성하여 부분-전체 계층을 표현하는 패턴 Component: 설계(인터페이스) Leaf: 상속받은 내용물 Composite: Leaf를 담는 Composite 즉, Component가 만들어야할 공통적인 것들을 가지고있다. 컴포지트 패턴은 일반적으로 파일시스템에 자주 사용한다. 컴포지트 패턴 예시 - 1 [요구사항] 파일 시스템을 만들자. Component를 만들자. [Component.java] package com.bkjeon.composite; abstract public class Component { private String name; public Component(String name) { this.name = na..
브릿지 패턴(Bridge Pattern) 구현부에서 추상층을 분리하여 각자 독립적으로 변형할 수 있게 해주는 패턴이다. 즉, 기능 부분과 구현 부분을 분리 먼저 브릿지 패턴을 사용하지 않고 모스부호를 출력하는 기능을 구현해보자. [MorseCode.java] package com.bkjeon.bridge; public class MorseCode { public void dot() { System.out.print("."); } public void dash() { System.out.print("-"); } public void space() { System.out.print(" "); } } [PrintMorseCode.java] package com.bkjeon.bridge; public class..
추상 팩토리 패턴(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...