개발/OOP

· DEV/Java
Spring의 코드 분리 단일 책임 원칙(Single Responsibility Principle, SRP)에 따라서 주어진 예제를 리팩토링 하면서 관심사 분리 즉 코드 분리를 해보자 코드 분리의 기준은 아래와 같다. 관심사 분리: 각 부분이 서로 다른 목적을 가진 코드로 분리 변하는 것과 변하지 않는 것의 분리: 이는 코드 내에서 변동성이 큰 부분과 그렇지 않은 부분을 분리하는 것을 의미합니다 일반적으로 자주 변경되는 로직은 분리하여 관리함으로써 코드의 유연성을 높이고, 유지보수를 용이하게 합니다. 반대로 변동성이 적은 부분은 안정적인 기능을 제공하는 코드로서 그 자체로 응집력을 갖도록 관리합니다. 공통 코드와 중복 코드의 분리: 코드 베이스 내에서 반복적으로 사용되는 부분(공통 코드)이나 같은 기능을..
단일 책임 원칙(Single Responsibility Principle, SRP) - SOLID 원칙 중 하나로, 클래스는 오직 하나의 책임만 가져야 한다 단일 책임 원칙은 객체 지향 프로그래밍에서 SOLID 원칙 중 하나입니다. 이 원칙에 따르면, "클래스는 오직 하나의 책임만 가져야 한다"는 것입니다. 가장 쉽게 볼 수 있는 예시로 백엔드 개발을 할 때 Service와 Repository를 구분해서 개발을 하는 것입니다 Service는 비즈니스 로직, Repository는 데이터베이스 접근에 대한 책임을 가집니다. 그 결과, 계층 간 데이터 변경과 유지 보수의 용이함을 가지죠 단일 책임 원칙의 이해 만약 클래스나 메소드가 너무 많은 일을 담당하고 있다면, 그 기능을 수정하거나 변경하는 데 필요한 노..
· DEV/Java
Aspect-oriented Programming (AOP) AOP(Aspect-Oriented Programming)는 교차 편집 문제를 분리하여 모듈성을 높이는 것을 목표로 하는 프로그래밍 패러다임입니다 교차 편집 문제는 로깅, 보안 및 트랜잭션 관리와 같은 다른 부분에 영향을 미치는 프로그램의 일부입니다 이러한 종류의 문제는 종종 코드를 분산시키거나 엉키게 하여 전통적인 객체 지향 프로그래밍(Object-Oriented Programming, OOP) 달성하고자 하는 문제의 분리를 위반합니다. AOP는 OOP에 추가 차원을 추가하여 이러한 문제를 해결합니다. AOP에서 모듈성의 주요 단위는 aspect Aspect는 여러 클래스에 영향을 미치는 동작을 재사용 가능한 모듈로 캡슐화합니다. 결과적으로 ..
데코레이터 패턴(Decorator Pattern) 데코레이터 패턴은 동일한 클래스의 다른 개체의 동작에 영향을 주지 않고 정적 또는 동적으로 개별 개체에 동작을 추가할 수 있는 디자인 패턴입니다. 이 패턴은 비헤이비어가 포함된 특수 래퍼 개체 안에 이러한 개체를 배치하여 개체에 새 동작을 연결하는 것과 관련된 구조적 패턴입니다. 데코레이터 패턴의 핵심 포인트 및 이점 데코레이터 패턴을 사용하면 구조를 변경하지 않고 객체에 새로운 기능을 추가할 수 있습니다. 런타임에 동작을 동적으로 추가하고 제거할 수 있기 때문에 상속 기반 접근 방식보다 더 유연합니다. 데코레이터를 함께 연결하여 복잡하고 복합적인 동작을 제공할 수 있습니다. 패턴은 클래스가 확장에는 열려 있지만 수정에는 닫혀 있는 개방-폐쇄 설계 원칙을..
· DEV/Java
Stream - Collection 요소(List,Queue) 등의 데이터 흐름 처리하는데 사용 된다 - 일반적으로 stream - 가공 - 수집 단계를 거친다 스트림(Stream)은 자바 8부터 추가된 기능으로, 데이터의 흐름을 처리하는 데 사용되는 추상화된 기능입니다. Collection 요소(List,Queue)를 람다식으로 처리하도록 지원하는 함수형 프로그래밍 기법이라고 볼 수 있습니다. 스트림을 사용하면 반복자를 사용하지 않고도 원하는 데이터를 필터링하고 맵핑하는 등의 복잡한 연산을 수행할 수 있습니다. 스트림은 원본 데이터를 변경하지 않고, 새로운 결과를 생성합니다. 또한, 스트림은 "지연 연산"을 합니다. 즉, 필요한 최종 결과를 만들기 위해 중간 연산을 실행하지 않고 최종 연산 시점에 한번..
· DEV/Java
Java의 Lambda 람다 식은 순수 함수를 사용하는 프로그래밍 패러다임인 함수형 프로그래밍을 지원하는 방법으로 Java 8에 도입되었습니다. 람다 식을 사용하면 익명 함수(Lambda)를 간결하게 만들고 코드를 더 읽기 쉽게 만들 수 있습니다. 다음은 람다 식에 대한 몇 가지 핵심 사항입니다. 람다 식은 이름이 없는 익명 함수를 생성합니다. 0개, 1개 또는 여러 매개변수를 가질 수 있습니다. 매개변수가 하나뿐이고 그 데이터 유형이 유추되는 경우에는 괄호를 생략할 수 있습니다. 람다 식에 문장이 하나만 있는 경우 중괄호를 생략할 수 있습니다. 예시 조각 코드 람다식으로 표현 (int x, int y) -> {return x+y;} 매개 변수가 하나인 경우 자료형과 괄호 생략가능 str->{System..
· DEV/Java
Java의 내부 클래스(Inner Class) - 🐥 카카오 테크 캠퍼스 클래스 내부에 선언하는 클래스(또는 중첩 클래스)입니다. 자신이 속한 외부 클래스와 함께 사용하는 경우가 잦습니다 다른 외부 클래스에서 사용할 일이 거의 없는 경우에 내부 클래스로 선언해서 사용합니다. 내부 클래스의 종류 인스턴스 내부 클래스, 정적(static) 내부 클래스, 지역(local) 내부 클래스, 익명(anonymous) 내부 클래스 인스턴스 내부 클래스 내부적으로 사용할 클래스를 선언 (private으로 선언하는 것을 권장) 외부 클래스가 생성된 후 생성됨 ( 정적 내부 클래스와 다름 ) private이 아닌 내부 클래스는 다른 외부 클래스에서 생성할 수 있음 주의 사항 이너 클래스는 외부 클래스가 생성 될 때 자동으..
· DEV/Java
Interface의 활용 - 🐥 카카오 테크 캠퍼스 Interface의 정의와 사용 자바에서 인터페이스란 추상 메서드와 상수 필드만을 가지는 클래스와 유사한 형태의 추상 타입이다. 인터페이스를 사용하면 클래스간의 의존성을 낮출 수 있으며, 다형성을 구현할 수 있다. 인터페이스는 다른 클래스에서 해당 메서드를 구현함으로써 인터페이스를 사용하는 클래스에서 해당 메서드를 호출할 수 있도록 한다. Strategy 패턴의 정의와 사용 Strategy 패턴은 객체의 행위를 클래스에서 구현하는 것이 아니라, 행위를 구현한 전략을 가진 객체를 전달받아 실행하는 패턴이다. Strategy 패턴을 사용하면 실행시간에 알고리즘을 선택할 수 있으며, 기존 코드의 변경 없이 새로운 알고리즘을 추가할 수 있다. Strategy ..
· DEV/Java
Interface 인터페이스는 메소드의 틀만 정의하고, 구현체는 없는 상태에서 받아들인다. interface 인터페이스 이름 { public static final float pi = 3.14F; public void makeSomething(); } 모든 변수는 상수로 선언된다 - public static final 모든 메서드가 추상 메서드로 선언된다 - public abstract 인터페이스의 핵심 원리 인터페이스는 클래스와 같은 타입이다. 클래스와 다르게 인터페이스는 상속이 아닌 구현을 통해 사용된다. 인터페이스는 구현부가 없는 추상 메소드를 가지고 있어, 클래스가 인터페이스를 구현하면 해당 추상 메소드를 반드시 구현해야 한다. 하나의 클래스는 여러 개의 인터페이스를 구현할 수 있다. 타입 상속을..
· DEV/Java
타입 상속 자바에서 타입 상속(Type Inheritance)이란, 클래스와 인터페이스 간의 관계를 나타내는 것으로, 부모 클래스나 인터페이스의 멤버들을 자식 클래스나 인터페이스에서 사용할 수 있도록 하는 것을 말합니다. 타입 상속을 통해 자식 클래스나 인터페이스는 부모 클래스나 인터페이스의 멤버들을 물려받아 사용할 수 있습니다. 이를 통해 코드의 재사용성을 높일 수 있고, 클래스나 인터페이스 간의 계층 구조를 표현할 수 있습니다. 자바의 타입 상속 원리 자바에서 타입 상속은 extends 키워드를 사용해 부모 클래스를 지정하거나, implements 키워드를 사용해 인터페이스를 구현하여 구현됩니다. 자식 클래스나 인터페이스는 부모 클래스나 인터페이스를 상속받음으로써, 부모 클래스나 인터페이스의 멤버들을..
berom
'개발/OOP' 태그의 글 목록