[GoF] Bridge 패턴 : 기능 계층과 구현 계층을 나눈다 [기능의 클래스 계층과 구현의 클래스 계층을 연결하는 패턴]
·
◈ Study/디자인패턴(GoF)🥞
- Bridge 패턴 : 기능 계층과 구현 계층을 나눈다 Bridge 패턴은 '기능의 클래스 계층'과 '구현의 클래스 계층'이라는 두 개의 독립된 클래스 계층을 나누고, 두 계층을 연결하는 패턴이다. 계층을 분리해두면 각각의 클래스 계층을 독립적으로 확장할 수 있다. - 어떤 경우에 사용할까? Bridge 패턴의 특징은 '기능의 클래스 계층'과 '구현의 클래스 계층'을 분리하는 것이다. 기능을 추가하고 싶으면 기능의 클래스 계층에 클래스를 추가하면 되고, 구현의 클래스 계층은 전혀 수정할 필요가 없어진다. - 예제 코드 다리의 어느 쪽인가? 이름 설명 기능의 클래스 계층 Display '표시한다' 클래스 기능의 클래스 계층 CountDisplay '지정 횟수만큼 표시한다' 기능을 추가한 클래스 구현의 클..
[Spring] @Autowired 옵션 처리 방법 [주입할 스프링 빈이 없어도 동작해야 할 때]
·
▣ Framework/Spring🍃
- 주입할 스프링 빈이 없어도 동작해야 할 때 주입할 스프링 빈이 없어도 동작해야 할 때가 있다. 자동 주입 대상이 없는 상태로 @Autowired만 사용하면 required의 기본값이 true라 오류가 발생한다. - @Autowired 옵션 처리 방법 @Autowired(required=false) : 자동 주입할 대상이 없으면 수정자 메서드 자체가 호출 안됨 @Nullable : 자동 주입할 대상이 없으면 null이 입력됨 Optional : 자동 주입할 대상이 없으면 Optional.empty 가 입력됨 //호출 안됨 @Autowired(required = false) public void setNoBean1(Member member) { System.out.println("setNoBean1 = ..
[cmd] 명령프롬프트(cmd)로 자바 컴파일 시 인코딩 깨짐 해결방법 [javac 명령어 인코딩 깨질 때]
·
▣ OS : 운영체제/cmd : 명령프롬프트💻
- 자바 컴파일 시 인코딩 깨짐 해결방법 javac를 이용해서 컴파일 하다보면 한글문자가 깨지는 경우가 있다. cmd 에러로그에서 볼 수 있듯, cmd에서 읽어들이는 인코딩은 x-windows-949인데, 컴파일 하려는 java 파일의 인코딩은 UTF-8이여서 인코딩이 깨진 상황이다. - 해결방법 javac 명령어에 인코딩 옵션을 넣어주면 된다. javac -encoding utf-8 파일명.java
[GoF] Builder 패턴 : 복잡한 인스턴스를 조립한다 [구조를 가진 인스턴스를 만들어 가는 패턴]
·
◈ Study/디자인패턴(GoF)🥞
- Builder 패턴 : 복잡한 인스턴스를 조립한다 Builder 패턴은 구조를 가진 인스턴스를 만들어 가는 패턴으로, 뼈대를 만들고 아래에서 위로 만들어 간다. - 어떤 경우에 사용할까? Builder 패턴은 구체적인 하위 클래스를 모른다는 게 큰 장점이다. 모르기 때문에 교체가 가능하고, 교체되기 때문에 부품으로서의 가치가 높다. 클래스 설계자는 '교체 가능성'을 항상 염두에 둘 필요가 있다. - 예제 코드 이름 설명 Builder 문서를 구성하기 위한 메서드를 규정한 추상 클래스 Director 하나의 문서를 만드는 클래스 TextBuilder 텍스트(일반 문자열)를 이용하여 문서를 만드는 클래스 HTMLBuilder HTML 파일을 이용하여 문서를 만드는 클래스 Main 동작 테스트용 클래스 -..
[개발100독] 2. 프로그래머의 뇌 - Felienne Hermans [훌륭한 프로그래머가 알아야 할 인지과학의 모든 것]
·
◈ 공부모임/개발도서 100독👟
2. 프로그래머의 뇌 - Felienne Hermans 프로그래밍과 인지과학의 만남 개발자들의 머리 속은 어떻게 움직이고 있을까 코드를 읽고 이해하는 개발자들의 머리 속이 어떻게 동작하는지 인지과학 관점으로 분석한 책. 장기기억인 LTM과 단기기억인 STM, 그리고 캐시메모리와 같은 작업 기억 공간으로 나눠 어떻게 하면 더 효율적으로 코드리딩을 할 수 있는지 잘 설명해주었다. 주니어 개발자에게도 좋은 책이지만, 실력이 부족한 팀원을 키워야 하는 시니어 개발자에게도 더더욱 추천하는 책이다. - 책 소개 인지과학에 기반을 둔 각종 방법론으로 개발자가 새로운 언어나 프레임워크를 빠르게 배워 생산성을 향상하도록 돕는다. 코드를 더 잘 이해하는 것에서 나아가, 버그 방지, 명확한 작명법, 리팩터링, 대규모 코드베..