Programming/Java

Programming/Java

[디자인 패턴] 퍼사드 패턴 (Facade Pattern)

1. 퍼사드 패턴 (Facade Pattern) Facade는 "건물의 정면"을 의미하는 단어로, 어떤 소프트웨어의 다른 커다란 코드 부분에 대해 간략화 된 인터페이스를 제공해주는 디자인 패턴을 의미합니다. 즉, 건물의 정면만을 보고 건물의 복잡한 내부는 감추는 것과 동일한 셈이죠. 퍼사드 객체는 복잡한 소프트웨어 바깥쪽의 코드가 라이브러리의 안쪽 코드에 의존하는 일을 감소시켜 주고, 복잡한 소프트웨어를 사용할 수 있게 간단한 인터페이스를 제공해줍니다. ex) 영화를 상영하는 과정 어떤 사람이 영화를 보고자 하는데, 영화를 보기 위해서는 다음과 같은 과정을 거치게 됩니다. 음료 및 팝콘 준비 → TV 켜기 → 영화 검색 → 영화 결제 → 영화 재생 [ 코드로 보기 ] public void view() {..

Programming/Java

[디자인 패턴] 어댑터 패턴 (Adapter Pattern)

0. Overview 강의를 듣던 중 디자인 패턴과 관련하여 공부를 하게 되었고, 디자인 패턴의 종류 중 중요하다고 생각되는 패턴들을 정리해보려고 합니다. 그 중 첫번째가 바로 어댑터 패턴 ! 1. 어댑터 패턴 (Adapter Pattern) - 현실 세계에서도 찾아보기 쉬운 패턴 (해외에서 한국 전자제품 사용하려면 110v '어댑터'가 필요합니다.) - 호환되지 않는 인터페이스를 가진 객체들이 협업할 수 있도록 해주는 구조적 디자인 패턴 - 클라이언트가 사용하는 인터페이스를 따르지 않는 레거시 코드를 재사용할 수 있게 해준다. 1 - 1 다이어그램을 통한 어댑터 패턴의 관계 Target : Adapter가 구현하는 인터페이스 Adaptee : 어댑터 대상 객체 / 기존의 코드 Adapter : Targ..

Programming/Java

[Java] Stream - findAny() VS findFirst()

0. Overview Stream API 관련 강의를 듣던 중 Optional 과 연관지어 사용하다가 findAny() 메서드와 findFirst() 메서드의 차이가 궁금해졌습니다. findAny()는 Stream에서 가장 먼저 탐색되는 요소를 리턴하고, findFirst()는 조건에 일치하는 요소들 중 Stream에서 순서가 가장 앞에 있는 요소를 리턴하는데, 둘의 차이가 뭘까요 ? 🔍 findAny() findAny() 메서드는 스트림에서 임의의 요소를 반환합니다. 병렬 처리된 스트림에서는 빠르게 결과를 반환할 수 있고, 요소의 순서를 고려하지 않습니다. 대부분의 경우 병렬 처리된 스트림에서 성능상 이점을 가질 수 있어요. 🔍 findFirst() findFirst() 메서드는 스트림의 첫 번째 요소..

Programming/Java

[Java] 정적 팩토리 메서드 (Static Factory Method)

0. Overview Optional 관련 강의를 듣다가, Optional.of() 와 같은 메서드를 정적 팩토리 메서드라고 듣게 되었습니다. "정적 팩토리 메서드"라는 키워드를 보고 정적 팩토리 메서드가 무엇인지 정리하고자 글을 작성하게 되었어요. 🫡 1. 정적 팩토리 메서드 ? 정적 팩토리 메서드는 객체의 생성을 담당하는 클래스 메서드라고 합니다. (사실 무슨 말인지 아직은 잘 모르겠어요..) 보통 자바를 공부할 때 객체를 생성하기 위해서는 new 키워드를 사용한다고 알고 있을 겁니다. 정적 팩토리 메서드는 new 키워드를 직접적으로 사용하지 않을 뿐, 클래스 내에 선언되어 있는 메서드를 내부의 new를 이용해 객체를 생성해 반환하는 것이라고 합니다. 즉, 정적 팩토리 메서드를 통해 new 를 간접적..

엥재
'Programming/Java' 카테고리의 글 목록