Spring? Java 개발자들에게 많이 친숙한(?) 나뭇잎 모양의 로고입니다 이 그림을 어디서 볼 수 있냐면 Intellij 라든가.. 인텔리제이 라든가.. 인텔리제이 라든가.. 아무튼 스프링이 무엇일까요? 제가 생각하는 Spring이란.. Spring Framework = DI(Dependency Injection) + MVC(Model View Controller) + WAS(Web Application Server) 입니다 어디선가 들어본 용어들이 난무하죠? DI는 흠 의존성 주입인데 뭔지 잘 모르겠고, MVC는 그냥 뷰랑 모델이랑 컨트롤러 분리하는 거고, WAS는 그냥 웹 서버를 의미하는 거고 끝~! 자자, 우리는 이렇게 간단하게 공부하고 넘어가서는 안되기에 차근차근히 알아보는 것을 목표로 합시..
What is 데코레이터? - 데코레이터 패턴 : 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴, 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안이다 이게 무슨 말일까요? 우리가 기능을 확장할 때 다양한 방법으로 확장할 수 있는데, 객체지향적인 언어에서는 상속을 통해서 기능을 확장할 수가 있어요 하지만 필연적인 상속이 정말 좋은 방법일까요? 상속은 객체지향을 위한 강력한 무기지만, 동시의 부모클래스와의 강력한 의존성을 가지게 되죠 이러한 상속을 대신하여 해결할 수 있는 방법은 다른 클래스에 합성시키는 것입니다 다이어그램을 보면서 말씀드릴게요~! Component라는 구성요소 클래스가 있죠? Decorator클래스는 Component를 상속함과 동시에 합성을 하여 멤버변수로..
What is 프록시 패턴? - 프록시 패턴은 다른 무언가와 이어지는 인터페이스의 역할을 하는 패턴입니다 한마디로 무언가를 대신해주는 대리자 입니다 또 너무나 어렵죠? 본래는 Proxy라는 객체가 해야될 일을 RealSubject 객체에게 의존성 주입(합성) 시킴으로써 메서드(메시지) 실행에 대한 책임을 RealSubject에게 넘기는 방식입니다 그렇게 되면 Proxy라는 객체는 외부에게 메서드를 노출하지 않고, 해당 로직대로 흐름을 제어할 수 있습니다 Why 프록시? 왜 쓸까요? 왜 굳이 숨길까요? 왜 합성시킴으로써 다른 사람에게 위임하는 걸까요? 프록시 패턴은 실제 세계와 아주 밀접하게 연관되어 있습니다 우리가 흔히 가게에서 결제하는 체크카드를 예로 들어볼까요? 체크카드로 결제를 하게 되면, 체크카드..
늦은 후기 늦게나마 19년도 회고글을 올립니다 ㅎㅎ 올려야지 올려야지 하다가 너무 바쁘고 힘든 나머지 정신없어서 못올렸네요ㅠㅠ 사실 지금도 출근에 허덕이는중 회사는 회사고, 개인 블로그는 블로그니까 시간을 매일마다 투자하고 있죠 통근시간이 길어서 힘들고 너무 정신없지만 어떻게든 잘 버티고 있네요ㅎㅎ 빨리 집을 구하는 시기가 오면 좋겠습니다 ㅠㅠ 취준과 함께한 Java 2019년은 취준과 함께 시작한 첫 해였는데 많은걸 경험하게 해줘서 너무 좋았던 거 같아요 잠깐 과거 이야기를 하자면, 저는 2017년에 처음으로 개발공부 시작했어요 ㅎㅎ 그때 자료구조가 너무 어려워서 진짜 힘들었는데 가뜩이나 c++로 하니까 더 그런거 같기도ㅠㅠ 그리고 그 다음해인 2018년엔 python을 처음 배우게 되었고 관련 프로젝..
본 게시글은 오브젝트를 읽고 블로그 포스팅자가 정리한 글임을 밝힙니다 객체 지향 프로그래밍(OOP) 객체라는게 뭘까요? 우리가 현실 세계에서 많은 문제들을 토대로 프로그래밍하곤 합니다 예를 들어, Cafe 라는 도메인을 주제로 하게 되면 바리스타, 메뉴판, 커피, 손님 등 다양한 주체들이 존재하지요 이 주체들이 하는 행동을 소프트웨어로 표현한 것이 바로 객체입니다 보통은 주체들이 가진 Data로 설계하기 마련인데, 행동을 바탕으로 설계하는 것이 바로 객체지향적인 설계가 되는 것입니다 조금 더 쉽게 다시 설명해 볼까요? 카페에서 바리스타는 무엇을 하나요? 바로, 커피를 제조하죠! 그러면 다음과 같이 메세지를 날리는 것입니다 Baristar.makeCoffee() -> Coffee 바리스타는 손님이 요청한 ..
브릿지 패턴? 구현부에서 추상층을 분리하여 각자 독립적으로 변형할 수 있게 하는 패턴이다 또 무슨 말인지 어렵네요 우선 UML 클래스와 함께 살펴볼게요~! Abstraction : Implementor를 인스턴스 변수로 합성된 상태이고, function이 추상화된 상태 Implementor : 추상화된 인터페이스 ConcreteImplementor : 인터페이스(Implementor)를 구체화한 객체 = 상속 받아서 구현 RefinedAbstraction : 추상화 클래스(Abstraction)를 구체화한 객체 한마디로, Abstraction 클래스는 Implementor에 의존되어 있는 상태고, 이 의존되어 있는 상태를 추상화하여 실제 구현은 자식 클래스(RefinedAbstraction)에 맡기는 전..