일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Web Server
- jsp
- Gradle
- jenkins
- devops
- tool
- 맛집
- springboot
- db
- linux
- ReactJS
- Spring Batch
- 요리
- java
- php
- Git
- MySQL
- redis
- AWS
- javascript
- it
- Spring
- Oracle
- JVM
- ubuntu
- laravel
- Spring Boot
- elasticsearch
- Design Patterns
- IntelliJ
- Today
- Total
목록Java & Kotlin/Java (107)
아무거나
퍼사드 패턴(Facade Pattern) 퍼사드 패턴이란 복잡한 과정을 간단하게 제공 다양한 패키지에서 부터 여러가지 클래스들을 제공받고 facade는 단순한 인터페이스를 제공함으로써 client들이 간단하게 어떤 과정(ex:함수, 프로젝트 등)을 사용할 수 있도록하는 패턴 퍼사드 패턴 예시 - 1 먼저 System이란 Package를 만들고 거기에 메인시스템이될 Facade 클래스를 생성 [Facade.java] 서브시스템인 HelpSystem01를 생성하자. [HelpSystem01.java] package com.bkjeon.facade.system; class HelpSystem01 { public HelpSystem01() { System.out.println("Call Constructor: ..
책임 사슬 패턴(Chain of Responsibility Pattern) 다양한 처리 방식을 유연하게 연결할 수 있다. Handler가 다음번에 처리할 객체들을 가지고 있어가지고 자기가 가지고 있는 프로세스가 실패할 경우 다음번 객체(=ConcreteHandler ..)로 넘겨주는 설계방식 책임 사슬 패턴 예시 - 1 사칙 연산을 하는 프로그램 Calculator 클래스 선언 [Calculator.java] package com.bkjeon.chain_of_responsibility; public abstract class Calculator { private Calculator nextCalculator; public void setNextCalculator(Calculator nextCalculat..
방문자 패턴(Visitor Pattern) 객체에서 처리를 분리해서 사용할 수 있다. 즉, 분리되어 있는 상태에서 사용할 수 있게 해주는 패턴 Client: Visitor와 Visitable를 사용 Visitor: Visitable을 방문하는 형태 Visitable: Visitor를 받아들이는 형태 ElementVisitor: Visitable이 가지고 있는 멤버변수같은 값들을 가지고 원하는 처리를 한다. VisitableElement: Visitable을 받아들이는 형태만 구현하게 된다. 방문자 패턴 예시 - 1 방문자 패턴 관련된 클래스를 구현하자. 인터페이스를 구현 [Visitor.java] package com.bkjeon.visitor; public interface Visitor { publi..
데코레이터 패턴(Decorator Pattern) 동적으로 책임 추가가 필요할 때 사용한다. Component: 실질적인 인스턴스를 컨트롤하는 역할 즉, decorator와 Component를을 컨트롤 하는 역할이다. (method 부분이 책임 부분) ConcreteComponent: Component의 실질적인 인스턴스의 부분이며, 책임의 주체의 역할 즉, Component가 컨트롤하는 객체 Decorator: Component와 concrete decorator를 동일시 하도록 해주는 역할 즉, Decorator은 Component가 될 수 있고, Component들을 가지고 있는 모양세를 가지고 있다고 생각하면 된다. ConcreteDecorator: 실질적인 장식 인스턴스 및 정의이며 추가된 책임..
[springboot] JPA + QueryDSL + Predicate 에서 yyyy-MM-dd 형태의 날짜 조회 방법 * 조회할 날짜의 변수명을 registerdTime이라고 하며, DB에는 TimeStamp형식으로 저장된다. ( entity에는 LocalDateTime 속성임 ) 1. 파라미터값의 속성이 String인 registerdTime을 받아온다.(ex:yyyy-MM-dd 형식으로 받아오는걸로 가정) 2. 시작날짜와 끝 날짜를 구하는 공통 클래스를 만든다. [LocalDateParser.java] import java.time.LocalDate; import java.time.LocalDateTime; import java.time.LocalTime; import java.time.format..
사용 이유 기호같은 특수문자 때문에 xml형식이 깨질까봐 CDATA로 감싸주는것이다. 즉, 그대로 출력해줌.
컴포지트 패턴(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(..