[OOP] GoF(Gang of Four) 디자인 패턴 장점 과 종류 !!
·
Knowledge/디자인 패턴
SOLID 랑 이것 저것 찾아보다가 디자인 패턴은 어떤 것 들이 있을까 해서 찾아봤습니다..공부 할게 너무너무 많은 것 일단 종류만 먼저 정리해 볼게요 !! 디자인 패턴(Design Pattern)이란?개발 중 발생하는 반복적인 문제들에 대한 해결책으로, 많은 개발자가 인정한 모범 사례(Best Practice)입니다. 객체 지향 4대 특성과 SOLID 원칙을 기반으로 합니다. 디자인 패턴의 장점재사용성: 검증된 솔루션을 재사용하여 반복적인 문제 해결가독성: 명확한 구조로 코드를 이해하기 쉬움유지보수성: 모듈화가 용이하여 변경 시 해당 부분만 수정 가능확장성: 기존 코드를 건드리지 않고 새로운 기능 통합 용이안정성: 수많은 검증을 거친 신뢰할 수 있는 방식 🍳 객체 지향과 디자인 패턴의 비유프로..
[OOP] 객체 지향 설계의 5가지 원칙 - S.O.L.I.D
·
Knowledge/디자인 패턴
📚Design Pattern:SOILDProblem Source: GitHub - Sw_Pilot_Java (Chapter 4 / Step 4) SOLID 원칙이란?객체지향 설계 5대 원칙으로, 유지보수성과 확장성을 높이고 코드의 복잡도를 줄이기 위한 핵심 설계 지침입니다.SOLID 원칙은 특정 언어나 프레임워크에 종속되지 않는, "변화에 유연하고 유지보수하기 쉬운 코드"를 만들기 위한 기본 철학입니다. 1. SRP: 단일 책임 원칙 (Single Responsibility Principle)"한 클래스는 하나의 책임(기능)만 가져야 한다."하나의 클래스에 여러 책임이 섞여 있으면, 한 기능의 변경이 다른 기능에 연쇄적인 영향을 줄 수 있습니다. 책임을 명확히 분리하면 변경의 파급효과를 줄이고 유지..
[JAVA] 인터페이스 vs 추상클래스 차이점 정리
·
Language/Java
1. 한눈에 보는 비교 (Interface vs abstract) 인터페이스와 추상 클래스, 막상 비교하려면 헷갈리는 두 개념의 문법적 차이를 표로 정리했습니다. 구분추상 클래스인터페이스사용 키워드abstractinterface사용 가능 변수제한 없음static final (상수)접근 제어자제한 없음(public, private, protected, default)public사용 가능 메서드제한 없음abstract, default, static, private상속 키워드extendsimplements다중 상속 여부불가능가능클래스에 다중구현, 인터페이스 끼리 다중 상속공통점1. 추상 메서드를 가지고 있어야 한다.2. 인스턴스화 할 수 없다. (new 생성자 사용 불가)3. 구현체(자식 클래스)의 인스턴스를..
[JAVA] Stack 구현 & Stack Class의 문제점 (feat. Deque)
·
Language/Java
📚Java Collection: Stack & DequeProblem Source: GitHub - Sw_Pilot_Java (Chapter 2 / Step 2 - 3) LIFO 구조인 스택의 개념과 사용법, 그리고 현대적인 대체제인 Deque를 알아봅니다.스택(Stack)은 '쌓다', '더미'라는 뜻을 가지고 있습니다. 식당에 쌓여 있는 접시 더미나, 총기의 탄창을 떠올리면 이해하기 쉽습니다. 가장 마지막에 들어간 데이터가 가장 먼저 나오는 LIFO(Last In First Out, 후입선출) 구조를 가지고 있으며, 이는 먼저 들어간 데이터가 먼저 나오는 Queue(FIFO)와 정반대되는 개념입니다. 1. 스택(Stack)의 구조와 특징LIFO 구조: 나중에 넣은(Push) 데이터가 먼저 나옵..
[JAVA] Collection Framework & Collections Class _ Part 1
·
Language/Java
🗂️Java Concept: Collection Framework & Collections Class _ Part 1자바의 자료구조(Collection) 전체 구조와 인터페이스 종류에 대해 정리해 보겠습니다자바를 공부하다 보면 Collection과 Collections라는 비슷하게 생긴 두 단어를 마주하게 됩니다. 's' 하나 차이인데 역할은 완전히 다릅니다. Collection 는 데이터를 담는 그릇(Framework)이고, Collections 는 그 그릇을 요리하는 도구(Utility)입니다.오늘은 자바의 자료구조 전체 지도인 컬렉션 프레임워크를 먼저 훑어보고, 다음 장에 이를 효율적으로 다루기 위한 Collections 클래스의 기능들을 정리해 보겠습니다. 1. 자바 컬렉션 프레임워크 (Col..
[JAVA] Getter/Setter 이중성 & 문제점 Refactoring
·
Language/Java
☕Java Study: Refactoring Getter/Setter이 포스팅은 Getter/Setter의 남용을 막고, 객체지향적인 설계를 하는 방법을 정리한 글입니다.자바를 처음 배울 때, 우리는 클래스를 만들고 습관적으로 모든 필드에 대해Getter와 Setter를 생성하곤 합니다. IDE가 단축키 한 번이면 만들어주니 너무나 자연스럽죠.하지만 "이게 정말 객체지향적인가?"라는 의문을 가져본 적 있으신가요?단순히 값을 넣고 빼기만 한다면 그건 객체가 아니라 데이터 주머니에 불과할지도 모릅니다. 오늘은 무분별한 Getter/Setter 사용이 왜 문제인지, 그리고 이를 해결하기 위한 진짜 객체지향 설계 방법(Rich Domain Model, VO 등)에 대해 정리해보겠습니다. 1. Getter/Set..
[JAVA] 접근제한자 & 캡슐화
·
Language/Java
🔒Java Concept: Access Modifier & Encapsulation접근제한자와 캡슐화, 그리고 더 나은 설계를 위한 메서드 활용법을 다룹니다.자바 프로그래밍을 하다 보면 public, private 같은 단어들을 매일 마주하게 됩니다. 처음에는 "그냥 다 public으로 하면 편하지 않나?"라고 생각할 수 있습니다. 하지만 이 접근제한자(Access Modifier)야말로 객체 지향의 핵심인 보안과 무결성을 지키는 문지기 역할을 합니다. 오늘은 접근제한자의 종류와 범위부터, Getter/Setter의 장단점, 그리고 최근 실무에서 Getter/Setter 대신 선호하는 "의미 있는 메서드 설계"까지 완벽하게 정리해 보겠습니다. 1. 접근제한자 완벽 정리 (Scope)접근 제한자는 "누..
[JAVA] 객체 지향 프로그래밍 4대 원칙
·
Language/Java
☕Java Concept: OOP 4 Principles & Methods이 포스팅은 객체 지향의 4대 원칙과 관련 문법, 사용 이유를 정리한 글입니다.자바(Java)를 공부하다 보면 숨 쉬듯이 듣게 되는 단어가 있습니다. 바로 객체 지향 프로그래밍(OOP, Object-Oriented Programming)입니다. "그냥 클래스 만들고 객체 생성하면 되는 거 아냐?"라고 생각하기 쉽지만, 실무에서 유지보수하기 좋은 코드를 짜기 위해서는 OOP의 4가지 핵심 원칙을 제대로 이해하고 있어야 합니다. 오늘은 캡슐화, 상속, 다형성, 추상화가 도대체 왜 필요하며, 자바에서 이를 구현하기 위해 어떤 키워드와 메서드를 사용하는지 완벽하게 파헤쳐 보겠습니다. 캡슐화 (Encapsulation)캡슐화는 데이터(변수)..