분류 전체보기 178

[디자인패턴] 추상 팩토리 패턴 (abstract Factory Pattern) 이란? - 개발자 배찌

😀추상 팩토리 패턴 팩토리 메서드 패턴과 비슷해보이지만, 명확한 차이점이 있다. - 팩토리 메서드 패턴 : 조건에 따른 객체 생성을 팩토리클래스로 위임하여, 팩토리 클래스에서 객체를 생성하는 패턴. - 추상 팩토리 패턴 : 서로 관련이 있는 객체들을 통째로 묶어서 팩토리 클래스로 만들고, 이를 팩토리조건에 따라 생성하도록 다시 팩토리를 만들어서 객체를 생성하는 패턴 😀코드로 알아보기 ComputerFactory.java package study.abstractFactoryPattern.code0; public interface ComputerFactory { void createKeyboard(); void createMouse(); } LgComputer.java package study.abstrac..

DESIGN PATTERN 2022.04.13

[디자인패턴] 팩토리 메서드 패턴(Factory Method Pattern) 이란? - 개발자 배찌

😀 팩토리 메서드 패턴? 객체를 생성하는 인터페이스는 미리 정의하되, 객체 생성은 팩토리(서브 클래스)로 위임하는 패턴. 😀 팩토리 메서드 패턴을 사용하는 이유? 객체 생성하는 코드를 분리하여 클라이언트 코드와 결합도를 낮추어 코드를 건드리는 횟수를 최소화 😀 팩토리 메서드 패턴 주의점 Factory Method가 중첩되기 시작하면 굉장히 복잡해 질 수 있다. 또한 상속을 사용하지만 부모클래스를 전혀 확장하지 않는다. 따라서, 이 패턴은 extends관계를 잘못 이용한 것으로 볼 수 있다. extends 관계를 남발하게 되면 프로그램의 엔트로피가 높아질 수 있으므로 Factory Method 패턴의 사용을 주의해야한다. 😀 코드로 알아보자!! Drink.java package study.factoryMe..

DESIGN PATTERN 2022.04.12

[디자인패턴] 전략패턴 (strategy Pattern)이란? - 개발자 배찌

😀전략패턴이란? 객체의 행위를 동적으로 바꾸고 싶은 경우, 직접 행위를 수정하지 않고 전략을 바꿔주기만 함으로써 행위를 유연하게 확장하는 방법을 말한다. 객체가 할 수 있는 행위들 각각을 전략으로 만들어 놓고, 동적으로 행위의 수정이 필요한 경우 전략을 바꾸는 것만으로 행위의 수정이 가능하도록 만든 패턴. 메서드내의 기능구현을 수정하고 싶을 때, 직접 그 코드에 찾아가 수정하게 된다면, 그 메서드를 사용하는 다른 코드들에게 영향을 끼치게 된다. 이는 SOLID의 원칙 중, OCP(Open-Closed Principle)에 위배됨!! 이러한 문제점을 해결하기 위한 패턴이 "전략패턴"이다. 😀코드로 알아보기!! Moving.java package study.strategyPattern.code0; publi..

DESIGN PATTERN 2022.04.12

[디자인패턴] 어댑터 패턴(Adapter Pattern)이란? - 개발자 배찌

😀어댑터 패턴이란? 한 클래스의 인터페이스를 클라이언트에서 사용하고자 하는 다른 인터페이스로 변환한다. 어댑터를 이용하면 인터페이스 호환성 문제 때문에 같이 쓸 수 없는 클래스들을 연결해서 쓸 수 있다. 즉, 어댑터 패턴은 '돼지코 콘센트'처럼 기존 클래스를 재사용 할 수 있도록 중간에서 맞춰주는 역할을 한다. Client는 Target인터페이스를 사용하여 메서드를 호출한다. Adapter에서는 Adaptee 인터페이스를 사용하여 ConcreteMethod 호출로 변경한다. 이때 client는 중간에 Adapter가 존재한다는 것을 인식하지 못한다. 😀코드로 알아봅시다! 110V 헤어드라이기와 220V 에어컨이 있다. 220V에어컨을 틀기 위해 어댑터를 사용 하여 110V에 끼워맞추기 Electronic..

DESIGN PATTERN 2022.04.11

[디자인패턴] 책임 연쇄 패턴 (Chai- of-responsibility Pattern) - 개발자 배찌

😀책임 연쇄 패턴이란? - 클라이언트에게 어떤 요청이 들어왔을 때, 요청받은 객체가 해당요청을 해결할 수 없을 경우 연결된 다음 객체들에게 전달하여 해당 요청을 해결할 수 있는 객체가 처리하는 방식 즉, 요청을 처리할 수 있는 객체가 여러개이고, 처리객체가 특정적이지 않을 경우 권장되는 패턴 😀장점 - 요청의 발신자와 수신자를 분리시킬 수 있다. - 결합도를 낮춰준다. - 클라이언트는 처리객체의 집합 내부 구조를 알 필요가 없다는것을 충족함. 😀단점 - 충분한 디버깅을 거치지 않을 경우, 집합 내부에서 사이클이 발생할 수 있음. 😀코드로 알아봅시다!! 요청 : 거스름돈을 남겨주는 로직. 100원, 10원, 1원단위로만 남겨줄 수 있음. DispenseChain.java package study.chain..

DESIGN PATTERN 2022.04.11

[디자인패턴] 브릿지패턴(Bridge Pattern) 이란? - 개발자 배찌

브릿지패턴이란? Bridge(=다리).. 서로 떨어져 있는 두 장소를 이어주는 역할 이것이 Bridge 패턴의 핵심!! 구현과 기능에 대해 두개의 별도 클래스로 구현한다. 😊코드로 알아봅시다! Noodle -> 추상클래스 Ramen -> Noodle 을 상속받는 클래스 Pasta -> Noodle 을 상속받는 클래스 (밑에 코드에 구현하진 않았음) ....등등 구현객체들..이 있겠죠.. NoodleTypeHandler -> 인터페이스 NoodleTypeIsRamen -> 라면 기능 구현클래스 NoodleTypeisPasta -> 파스타 기능 구현클래스 (코드에 구현하진 않았음) .....등등 기능객체들....이 있겠죠 Noodle.java package study.BridgePattern.code1; i..

DESIGN PATTERN 2022.04.07

[디자인패턴] 프록시패턴(proxy Pattern)과 데코레이터패턴(decorator Pattern) - 개발자 배찌

프록시패턴(proxy pattern) 과 데코레이터패턴(decorator pattern) 😊공통점 둘 다 프록시를 이용한다는 점! 😊프록시란? '대리' 라는 의미로 프록시에게 어떤 일을 대신 시키는 것 😊프록시의 기능? • 접근제어 (권한에 따른 접근 차단, 캐싱, 지연로딩) => 프록시패턴 이용 • 부가기능추가 (원래 서버가 제공하는 기능에 더해서 부가기능을 수행) =>데코레이터패턴 이용 ex) 요청값이나 응답값을 중간에 변형한다. ex) 실행시간을 측정해서 추가 로그를 남긴다. 1. 프록시패턴 😀코드로 알아보기!! Subject.java public interface Subject { void run(); } RealSubject.java @Slf4j public class RealSubject im..

DESIGN PATTERN 2022.04.07

[노개북] "실용주의프로그래머" 챌린지 16일차

노개북" 노마드 개발자 북클럽 16일차!! #코딩 #개발자 #노마드북클럽 #노개북 #노마드챌린지 #실용주의프로그래머 #3주스케쥴 3 주차 수, 목 | Assignment #16 📚 복습 ✔️ 미션 Mission(4) Final Mission 더 좋은 코드를 쓰고, 더 좋은 방식을 택하고, 더 좋은 서비스를 만들고 싶은가요? 우리는 무언가를 더 잘하기 위해서는, 더 나아지기 위해서는 의식적으로 더 잘하려고 해야합니다. 어떻게 더 잘할지 생각하고, 실천해야 합니다. 실용주의 프로그래머의 교훈이, 여러분의 실력을 의식적으로 성장시키는 좋은 재료가 되기를 바랍니다. 최종 미션으로는 책을 읽으며 뼈맞았던 팁 중 10가지 원칙을 고르고, 이를 정리하시면 됩니다!

[노개북] "실용주의프로그래머" 챌린지 15일차

"노개북" 노마드 개발자 북클럽 15일차!! #코딩 #개발자 #노마드북클럽 #노개북 #노마드챌린지 #실용주의프로그래머 #3주스케쥴 3 주차 화 | Assignment #15 📚 9장. 실용주의 프로젝트 ✔️ TIL 오늘 TIL 3줄 요약 팀과의 소통 버전관리, 테스트, 자동화 사용자를 기쁘게 하라 TIL (Today I Learned) 날짜 2022.04.05 오늘 읽은 범위 9장. 실용주의 프로젝트 책에서 기억하고 싶은 내용을 써보세요. 작고 안정적인 팀을 유지하라.(p379) 팀의 존재를 소통하라(p.382) DRY를 지키려면 서로 관심을 유지하라(p.383) 처음에는 작고 제한적일지라도 시스템의 끝에서 끝까지 전체에 걸쳐 있는 단일 기능을 개발할 것을 추천한다(p.384) 유행하는 것이 아니라 실제..

[노개북] "실용주의프로그래머" 챌린지 14일차

"노개북" 노마드 개발자 북클럽 14일차!! #코딩 #개발자 #노마드북클럽 #노개북 #노마드챌린지 #실용주의프로그래머 #3주스케쥴 3 주차 월 | Assignment #14 📚 복습 ✔️ 미션 Mission(3) 실용주의 프로그래머 Mission 3 📌 연습문제 33 다음 문장들이 진정한 요구 사항인가? 가능하다면 진정한 요구사항이 아닌 것을 좀 더 유용하게 고쳐 써 보라. 1. 응답시간은 500ms 이하여야 한다. 📖 책의 해답 : 이 문장은 진짜 요구 사항처럼 보인다. 환경 때문에 애플리케이션에 제약을 추가해야 할 수 있다. 💡 나의 해답 : 진정한 요구사항인 것 같다. 하지만 추가적으로 응답시간이 500ms를 넘긴다면 어떻게 대처할것인가? 어떠한 제약조건때문에 속도를 맞추지 못한다면 속도를 맞추기위..