본문 바로가기
  • Where there is a will there is a way.

개발/java27

템플릿 메소드 패턴 템플릿 메소드 패턴 이란 언제 사용하는것이 좋은가 ? 변하는 부분과 변하지 않는 부분이 있고 변하지 않는 부분의 관리포인트가 많을 때 사용하면 좋다. 만약 커피와 차를 만든다고 가정해보자 커피를 끓일때와 차를 끓일때 방법이 비슷하다면? 커피 1. 물을 끓인다 2. 커피를 우려낸다. 3. 커피를 컵에 따른다. 4. 설탕과 우유를 추가한다. 차 1. 물을 끓인다 2. 차를 우려낸다. 3. 차를 컵에 따른다. 4. 레몬을 추가한다. 자 이렇게 되면 우리는 흔히 package template.first; public abstract class Beverage { abstract void prepareRecipe(); void boilWater(){ System.out.println("물을 끓인다"); } voi.. 2019. 7. 4.
어댑터 패턴 어댑터 패턴 객체지향 어댑터가 뭔지는 그리 어렵지 않게 이해할 수 있을 것이다. 흔히 미국여행 갔을 경우 어댑터가 달라서 준비해간 경험이 있다면 말이다. 어댑터의 역할은 국산 플러그와 미국식 소켓 사이에서 국산 전원 플러그를 미국식 소켓에 꽂을 수 있게 해주는 역할을 한다. 그렇다면 객체지향 어댑터는 어떨까? 객체지향 어댑터 어떤 소프트웨어 시스템이 있는데, 새로운 업체에서 제공한 클래스 라이브러리를 사용해야 한다고 해 보자. 그런데 새로 채택한 업체에서 사용하는 인터페이스가 기존 업체에서 사용하던 인터페이스하고 다르다고 가정해 보자. 하지만 기존의 코드를 바꿔서 이 문제를 해결할 수는 없는 상황이다. 그렇다고 업체에서 공급 받은 클래스도 변경할 수 없고.. 그렇다면 이때 한 업체에서 사용하는 인터페이스.. 2019. 7. 1.
커맨드 패턴 커맨드 패턴 호출 캡슐화 : 한차원 높은 단계의 캡슐화 메소드 호출을 캡슐화하는 것이다. 메소드 호출을 캡슐화 하는 것이다. 흔히 식당으로 생각해보자 고객과 웨이트리스 , 그리고 주문과 주방장 사이의 관계에 대하서 생각을 해보면 커맨드 패턴에서 각 객체들 사이의 관계를 이해할 수 있을 것이다. 1. 고객이 웨이트리스한테 주문을 한다. 2. 웨이터는 주문을 받아서 카운터에 갖다 주고 주분 받아요 이야기를 한다. 3. 주방장이 주문대로 음식을 준비한다. 1 -> createOrder() 2 -> takeOrder() 3 -> orderUp() 4 -> makeBurger(), makeSake() flow 주문서는 주문한 메뉴를 요구하는 역할을 하는 객체로 생각할 수 있다. 다른 객체와 마찬가지로 여기저기로 .. 2019. 6. 30.
자바 날짜계산 유틸리티 구현 자바 날짜계산 유틸리티 구현구현 조건startDate 와 endDate를 hashMap 변수로 받는다. 그런다음 해당 날짜들의 리스트를 출력한다. 현재 java8 로 변하면서 Date 에서 LocalDate를 사용한다. 리팩토링 했으므로 둘 다 작성하면 얼마나 개선됬는지 한눈에 볼 수 있겠다..클래스는 static 으로 할까 그냥 인스턴스로 할까 고민을 했는데 범용적으로 쓸 걸 고려해서 static으로 했다. LocalDate로 구현package com.waug.cube.v1.openapi.goods.item.util; import java.time.LocalDate; import java.time.Period; import java.time.format.DateTimeFormatter; import j.. 2019. 2. 19.
java Ramda 리스트 컬랙션 데이터 예제 java Ramda 리스트 컬랙션 데이터 예제 List goodOrderInfoUseFieldList = goodOrderInfoType.getGoodOrderInfoUseFields();List goodOrderInfoTypeCatsList = goodOrderInfoUseFieldList.stream() .map(goodOrderInfoUseField -> goodOrderInfoUseField .getGoodOrderInfoTypeCats()).collect(Collectors.toList()); goodOrderInfoUseFieldList.stream() .map(goodOrderInfoUseField -> goodOrderInfoUseField.getGoodOrderInfoTypeCats()).. 2019. 1. 30.
java 메모리 영역 java 메모리 영역 메소드 영역 ( 메소드 영역은 JVM이 시작할 때 생성되고 모든 스레드가 공유하는 영역이다. ) runtime constant pool 클래스나 인터페이스 메서드와 필드등 모든 래퍼런스를 담고있는 테이블이다.실제 메모리의 주소를 참조하여 중복을 방지한다. field / static 데이터method contruct Heap 영역 힙 영역은 객체와 배열이 생성되는 영역이다. 참조하는 변수나 필드가 없다면 의미 없는 객체가 되기 때문에 이것을 쓰레기로 취급하고 Garbage Collector 를 실행시켜 쓰레기 객체를 힙 영역에서 자동으로 제거한다. JVM 스택 영역 스택 영역은 각 스레드마다 하나씩 존재하며 스레드가 시작될 때 할당된다. 자바 프로그램에서 추가적으로 스레드를 생성하지 .. 2019. 1. 14.