본문 바로가기
반응형

public void static main()/Design Pattern9

[Design Pattern] Strategy Pattern 아~ 디자인 패턴 너모 많자나... 언제 끝나는지 아시는분~~~?? Strategy Pattern? 전략 패턴이란 실행 중에 알고리즘을 선택할 수 있게 하는 행위 소프트웨어 디자인 패턴이다. 특정한 계열의 알고리즘들을 정의하고 각 알고리즘을 캡슐화하며 이 알고리즘을 해당 계열 안에서 상호 교체가 가능하게 만든다! 아주그냥 이름처럼 전략적으로 사용하는 거군! [사용이유] 구현된 알고리즘은 다르지만 동일한 목적을 지닌 클래스들이 존재할 때 사용한다! 확장이 용이하게! [구조] Strategy(전략) 전략을 이용하기 위한 인터페이스(API)를 결정합니다. ConcreteStrategy(구체적인 전략) Strategy를 실제로 구현하는 역할 Context(문맥) Strategy의 인터페이스(API)를 호출해서 .. 2022. 2. 5.
[Design Pattern] Bridge Pattern 이번엔 브릿지 패턴! 힘내..! 아직 할께 많아...! 하핳하하하하하ㅏ.... Bridge Pattern? Bridge는 다리라는 뜻! 위 그림과 같이 떨어져있는 두 장소를 이어주는 역할을 한다! Bridge Pattern도 두 장소를 연결하는 역할을 한다! 기능 클래스 계층 ll ================== ll 구현 클래스 계층 구현부(Implementation)에서 추상층(abstraction)을 분리하여 각자 독립적으로 변형이 가능하고 확장이 가능하도록하는 패턴! 기능 클래스 계층과 구현 클래스 계층을 연결해주는 패턴 A라는 상위 클래스를 상속 받는 B라는 하위 클래스에서 새로운 기능을 추가하는 계층 A라는 인터페이스(API)를 구현한 B라는 객체가 존재할 때 구현 클래스 계층이라고 말한다... 2021. 11. 16.
[Design Pattern] Decorator Pattern 어제도 열심히 했고 오늘도 열심히 하기 위해서 너어어어어무 놀고싶고 쉬고싶지만 공부를 하기 위해서 컴퓨터에 앉았다 너무 기특해 림아 너모 기특해~ Decorator Pattern? 클래스의 코드를 전혀 바꾸지 않고도 객체에 새로운 임무를 부여하기 위해서 등장했다! 객체의 결합을 통해 기능을 동적으로 유연하게 확장 할 수 있게 해주는 패턴! 상속(Inheritance)과 합성(Composition)을 사용하여 객체에 동적으로 책임을 추가할 수 있게 하는 패턴! 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴! [사용 목적] 기존 객체들에게 영향을 주지 않고 개별 객체에 기능들을 추가하고 싶을때 사용! 추가한 기능들은 언제든지 없앨 수 있다! => 없어져도 기존 객체들이 영향을 받지 않는다구!.. 2021. 11. 16.
[Design Pattern] Facade Pattern 사실 오늘 공부할 패턴은 처음 들어보는 패턴이야... 그래서 뭔지 감도 안잡혀... 개념 정리부터 무슨 말인지 잘몰라서 제일 이해된 정의를 가져와땅! Facade Pattern? Facade는 프랑스어에서 유래된 단어로 건물의 외관이라는 뜻을 가지고있음! 건물의 외벽에서 보면 안의 구조는 보이지 않는다! (오~ 이 한줄로 얼추 개념을 이해했어) 라이브러리, 프레임워크, 혹은 복잡한 클래스들의 집합에 대한 단순화된 인터페이스를 제공하는 디자인 패턴이다! 복잡하고 많은 Subsystem(내부구조)을 거대한 클래스(외벽)로 만들어 감싸서 편리한 인터페이스를 제공해준다! (서브시스템이..뭐야..?) [구조] Facade (외벽) 어떤 Subsystem 클래스가 클라이언트의 요청에 응답해야 하는지 알고있다. 클라.. 2021. 11. 11.
[Design Pattern] Adapter Pattern 아~ 수많은 디자인 패턴중에 드디어 궁금했던 어댑터 패턴을 공부한다 곰부해보고싶은 패턴은 많은데 패턴이 느므 많자나~ Adapter Pattern? 보통 우리가 해외 여행 갈때 볼트 변환기 같은 것들을 어댑터라고 표현한다. 이같이 Adapter Pattern은 클래스의 인터페이스를 사용자가 기대하는 인터페이스 형태로 변환시키는 패턴이다. [장점] 관계가 없는 인터페이스 간 같이 사용이 가능하다. 프로그램 검사가 용이하다. 클래스 재활용성이 증가한다. [구조] Target Client가 직접적으로 사용하려고 하는 인터페이스를 정의한다. (Adaptee가 지원하길 바라는 인터페이스를 의미!) Adaptee (개조되는 역할) Adapter에서 사용하고자 하는 인터페이스를 정의하고 있다. Adapter Targ.. 2021. 11. 10.
[Design Pattern] Builder Pattern 아~ 패턴 왜이렇게 많아 솔직히 만드신분도 다 못외울꺼같아~ Builder Pattern? 복잡한 객체를 생성하는 클래스 와 표현하는 클래스를 분리하는 것! 동일한 절차에서도 서로 다른 표현을 생성하는 방법을 제공! 다시 말해서 객체의 생성 단계들을 캡슐화 하여 객체의 생성을 유연하게 해주는 패턴! 객체의 생성과정과 객체의 표현 방법을 분리! [구조] Builder(건축자)의 역할 인스턴스 생성을 위한 인터페이스(API)를 선언! ConcreteBuilder(구체적인 건축자)의 역할 Builder 인터페이스를 구현하는 역할 Director(감독자)의 역할 Builder 인터페이스(API)를 사용해 인스턴스를 사용 Product(제품)의 역할 만들어질 제품의 속성과 기능을 가짐 [구현] // 제품을 필드로.. 2021. 11. 9.
[Design Pattern] Flyweight Pattern 오늘은 재택근무를 해서 블로그 공부를 할 시간이 됐다! 디자인 패턴을 집중적으로 공부해보자~ Flyweight Pattern? 어떤 클래스의 인스턴스 한 개만 가지고 여러 개의 "가상 인스턴스"를 제공하고 싶을 때 사용하는 패턴이다! 비용이 큰 자원을 공통으로 사용할 수 있도록 만드는 패턴이다! 궁극적으로 객체를 가볍게 하기 위한 것이라구~! [핵심] 객체를 가능한 대로 공유시켜서 쓸떼없이 new하지 않도록 하는 것이 목표! 객체가 필요할 때 맨날 new 하는게 아니라, 이미 만들어져 있는 인스턴스(객체)를 이용할 수 있으면 그걸 공유하기 [구조] Flyweight의 역할 공유에 사용할 클래스들의 인터페이스(API) 다시 말해서 프로그램을 가볍게 하기 위한 역할을 함! ConcreteFlyweight(구.. 2021. 11. 9.
[Design Pattern] Observer Pattern 오늘은 발표준비겸 Observer Pattern이 무엇인지 알아보자! 옵저버 패턴이 뭔가 찾다가 진짜 엄청난 블로그를 발견했다! 덤으로 좋은 책도 발견! Head First Design Patterns 책이다! 궁금하시분은 찾아보시길! (광고 아닙니다~!!!) 나를 단번에 이해 시켜주셨다! 출처는 맨아래! Observer Pattern이 뭐야? - 한 객체의 상태가 바뀌면 그 객체에 의존하는 다른 객체들한테 연락이 가고, 자동으로 내용이 갱신되는 방식으로 일대다(one-to-many)의존성을 정의한다. 🔴잠깐!🔴 일대 다(one-to-many) 관계ㅖㅖㅖ? - 옵저버 패턴에서 상태를 저장하고 지배하는 것은 주제(Subject) 객체이다. 따라서 상태가 들어있는 객체는 하나만 있을 수 있다. - 옵저버는 .. 2021. 11. 7.
[Design Pattern] Singleton Pattern 아 진짜 오랜만에 공부한다 11월 시작부터 열심히다~ 아자아자 리마 파이팅 오늘은 디자인 패턴에 Singleton Pattern을 공부할꺼다! 왜냐면 내일 인강 들을꺼니까! 싱글톤 패턴이 뭘까? - 객체의 인스턴스가 오직 1개만 생성되는 패턴을 의미한다. 음... 쫌더 알아보자! - 애플리케이션이 시작될 때 어떤 클래스가 최초 한번만 메모리를 할당하고 그 메모리에 인스턴스를 만들어 사용하는 디자인 패턴! 생성자가 여러차례 호출되더라도 실제로 생성되는 객체는 하나고 최초 생성 이후에 호출된 생성자는 최초에 생성한 객체를 반환한다. (자바에서는 생성자를 private로 선언해서 생성 불가하게 하고 getInstance()로 부르게함!) 다시말해서 인스턴스가 필요 할 때 똑같은 인스턴스를 만들어 내는 것이 아.. 2021. 11. 2.
반응형