본문 바로가기

분류 전체보기177

Mixin Pattern (자바에선 다중상속 허용X -> 믹스인디자인패턴으로 흉내) 믹스인(Mixin) 디자인 패턴은 여러 클래스로부터 코드를 재사용할 수 있도록 하는 패턴으로, 클래스가 여러 다른 클래스로부터 기능을 "혼합"할 수 있게 해줍니다. 이 패턴은 다중 상속의 일부 개념을 차용하되, 일반적인 상속보다는 더 유연하고, 주로 인터페이스와 조합하여 사용됩니다. 믹스인 패턴의 특징재사용성: 공통 기능을 여러 클래스에 쉽게 재사용할 수 있습니다.유연성: 상속 계층 구조와는 독립적으로 기능을 추가할 수 있습니다. 즉, 특정 기능을 추가하기 위해 클래스를 상속할 필요가 없습니다.다중 상속의 대안: 자바는 다중 상속을 지원하지 않지만, 믹스인 패턴을 사용하면 다중 상속과 유사한 효과를 얻을 수 있습니다. 믹스인 패턴의 활용 방법 자바에서는 믹스인 패턴을 인터페이스와 디폴트 메서드 또는 조합.. 2024. 8. 28.
Proxy Pattern ( Delegate Pattern 에서의 '위임' 과의 차이 ) Proxy Pattern  정의: 프록시 패턴(Proxy Pattern)은 다른 객체에 대한 접근을 제어하기 위해 그 객체의 대리자 또는 대리 객체를 제공하는 디자인 패턴입니다. 프록시 객체는 타겟 객체를 대신하여 클라이언트와 상호작용하며, 타겟 객체에 대한 접근을 제어하거나 추가 작업을 수행할 수 있습니다.목적: 원래 객체에 대한 접근을 제어하거나, 원래 객체와의 상호작용 전에 추가적인 작업(로깅, 접근 제어, 캐싱 등)을 수행할 수 있도록 하는 것.예시:A는 클라이언트 클래스(Client).B는 실제 작업을 수행하는 타겟 클래스(Target).C는 프록시 클래스(Proxy)로, 클라이언트의 요청을 타겟 클래스에 전달하고, 타겟 클래스의 메서드 실행을 제어합니다.// Bpublic interface S.. 2024. 8. 28.
Delegate Pattern (위임 패턴) "Delegate"라는 개념은 다양한 프로그래밍 언어와 프레임워크에서 사용되며, 메서드 호출을 다른 객체나 메서드로 위임하는 패턴을 의미합니다. Java에서의 위임(delegate)은 특정 인터페이스의 메서드를 직접 구현하지 않고, 그 구현을 다른 객체에 위임(delegate)하는 방식으로 구현할 수 있습니다. 이를 통해 코드 재사용성과 유연성을 높일 수 있습니다. Delegate Patterndelegate는 '위임하다' 라는 사전적 의미즉, 객체가 자신의 기능을 다른 객체에게 위임하여 기능을 실행하는 디자인 패턴객체 간의 결합도를 낮춰서 유지보수성과 확장성을 높이는데 사용됨예시 : A는 B의 기능을 사용하고 싶을 때, A가 B의 기능을 직접 구현하지 않고, C에게 위임(delegate)하여 구현하는 .. 2024. 8. 28.
2024.08.28(수) { Aspect 적용 시점, 메서드 매처(Method Matcher)와 클래스 필터 } 애스펙트(Aspect)를 적용해야 할 시점 애스펙트(Aspect)를 적용해야 할 시점은 코드에서 반복적으로 발생하는 횡단 관심사(Cross-Cutting Concerns)를 처리하고자 할 때입니다. 횡단 관심사란 여러 모듈이나 클래스에서 공통적으로 필요하지만, 핵심 비즈니스 로직과는 직접적으로 관련이 없는 기능들을 의미합니다. 이러한 관심사를 적절히 분리하고 관리하기 위해 애스펙트 지향 프로그래밍(AOP)을 사용합니다.  애스펙트를 적용해야 할 주요 시점 로깅(Logging)상황: 애플리케이션의 여러 부분에서 로그를 기록하는 코드가 필요할 때.적용 이유: 로깅 코드를 각 클래스에 반복해서 작성하지 않고, 애스펙트로 분리하여 관리할 수 있습니다. 이는 코드의 중복을 줄이고, 로깅 로직을 중앙에서 관리할 수.. 2024. 8. 28.
[ AOP 포인트컷 ] 클래스 필터(ClassFilter)와 메서드 매처(MethodMatcher) 클래스 필터(ClassFilter)와 메서드 매처(MethodMatcher)는 AOP(Aspect-Oriented Programming)에서 포인트컷(Pointcut)을 정의할 때 사용하는 중요한 개념입니다. 이들은 포인트컷이 어떤 클래스나 메서드에서 적용될지를 결정하는 데 사용됩니다. 클래스 필터 (ClassFilter)ClassFilter는 AOP 포인트컷에서 특정 클래스 집합을 대상으로 필터링하는 역할을 합니다. 즉, 어떤 클래스가 포인트컷의 대상이 될지 여부를 결정합니다.인터페이스 정의:public interface ClassFilter { boolean matches(Class clazz);}matches(Class clazz): 이 메서드는 주어진 클래스가 포인트컷의 대상이 될지 여부를 .. 2024. 8. 27.
2024.08.27(화) { 포인트컷 익스프레션, 정적&동적 매칭, @Qualifier, @CustomAnnotation } 정적매칭 - 메서드 오버로딩: 정적 매칭의 대표적인 예는 메서드 오버로딩입니다. 컴파일러는 동일한 이름의 메서드가 여러 개 존재할 때, 매개변수의 타입과 개수에 따라 호출할 메서드를 컴파일 시점에 결정합니다. 동적매칭 - 메서드 오버라이딩: 런타임 매칭의 대표적인 예는 메서드 오버라이딩입니다. 자바에서 다형성(polymorphism)을 이용해 부모 클래스의 참조 변수를 통해 자식 클래스의 메서드를 호출하는 경우, 실제 호출되는 메서드는 런타임에 결정됩니다.@Qualifier : Spring Framework에서 주로 사용되는 애노테이션으로, 의존성 주입(Dependency Injection) 과정에서 같은 타입의 빈(Bean)이 여러 개 있을 때, 특정한 빈을 명시적으로 선택할 수 있게 해줍니다. Spr.. 2024. 8. 27.