728x90
반응형

Java 6

[java] 데코레이터(Decorator) 패턴

정의 데코레이터 패턴은 객체의 구조를 변경하지 않고도 객체에 동적으로 새로운 기능을 추가할 수 있는 구조적인 패턴입니다. 이 패턴은 객체의 확장을 위해 상속 대신 구성을 활용하며, 객체를 래핑하여 런타임 시에 새로운 기능을 추가하거나 수정할 수 있도록 합니다. 장점 개방-폐쇄 원칙(OCP, Open-Closed Principle)을 따릅니다. 기존 코드 수정 없이 새로운 기능을 추가할 수 있습니다. 단일 책임 원칙(SRP, Single Responsibility Principle)을 지킬 수 있습니다. 각 데코레이터 클래스는 자체적으로 한 가지 기능만 추가합니다. 객체 간의 결합도를 낮춥니다. 구성을 통해 필요한 데코레이터를 동적으로 추가하므로 객체 간의 의존성이 줄어듭니다. 단점 많은 데코레이터가 중첩..

개발/자바 2024.01.11

[java] 어댑터(Adapter) 패턴

정의: 어댑터 패턴은 호환되지 않는 인터페이스를 가진 두 클래스를 함께 동작할 수 있도록 하는 디자인 패턴입니다. 쉽게 말해, 기존의 클래스를 수정하지 않고 새로운 인터페이스에 맞게 변환해주는 역할을 하는 패턴입니다. 장점: 재사용성 증가: 기존 클래스를 변경하지 않고 새로운 클래스에 적응시킬 수 있으므로 기존 코드를 재사용할 수 있습니다. 유연성 향상: 호환되지 않는 인터페이스를 갖는 클래스를 함께 사용할 수 있어서 시스템의 유연성을 향상시킵니다. 연동성 증가: 기존의 클래스를 새로운 클래스와 연동할 수 있게 해주어 기존 시스템을 새로운 기능과 연동시킬 수 있습니다. 단점: 성능 저하 가능성: 어댑터가 추가되면 성능 저하가 발생할 수 있습니다. 복잡성 증가: 어댑터 패턴이 과도하게 사용되면 코드의 복잡..

개발/자바 2024.01.11

[java] 추상 팩토리(Abstract Factory) 패턴

추상 팩토리(Abstract Factory) 패턴 정의: 추상 팩토리 패턴은 서로 연관된, 또는 의존하는 객체들을 생성하기 위한 인터페이스를 제공하며, 각각의 구체적인 팩토리 클래스가 이를 구현하여 객체를 생성하는 디자인 패턴입니다. 이 패턴은 팩토리 메서드 패턴을 조합하여 여러 제품군을 생성하도록 설계되어 있습니다. 장점: 유연성과 확장성: 새로운 제품군을 도입하거나 기존 제품군을 확장하기가 용이합니다. 제품군 간의 일관성: 추상 팩토리는 연관된 제품들을 생성하므로, 이들이 함께 사용될 때 일관성을 유지할 수 있습니다. 클라이언트 코드 단순화: 클라이언트는 구체적인 클래스 이름을 알 필요 없이 팩토리를 통해 객체를 생성할 수 있습니다. 단점: 복잡성 증가: 새로운 제품이나 팩토리를 추가할 때마다 클래스..

개발/자바 2024.01.10

[java] 싱글턴(Singleton) 패턴 설명 및 코드

싱글턴(Singleton) 패턴은 객체지향 디자인 패턴 중 하나로, 어떤 클래스가 오직 하나의 인스턴스만을 가지도록 보장하는 패턴입니다. 이 패턴을 사용하면 해당 클래스의 인스턴스를 여러 번 생성하지 않고 하나의 공유 인스턴스를 사용할 수 있습니다. 주로 리소스 공유, 설정 관리, 로깅 등의 상황에서 유용하게 쓰입니다. 싱글턴 패턴을 구현하는 가장 일반적인 방법은 다음과 같습니다. 생성자를 private으로 만들어 외부에서 객체를 직접 생성하는 것을 막습니다. 정적 메서드(static method)를 통해 객체를 반환하고, 해당 객체가 없을 경우에만 객체를 생성합니다. 객체는 처음 생성된 이후에는 항상 같은 객체를 반환합니다. 예시 public class Singleton { // 1. 생성자를 priv..

개발/자바 2024.01.09

자바로 큐(Queue) 만들기

큐(Queue)는 자바에서 제공하는 자료구조 중 하나로, 먼저 들어간 데이터가 먼저 나오는 선입선출(FIFO) 구조를 가지고 있습니다. 자바에서는 Queue 인터페이스를 제공하며, 이를 구현한 다양한 클래스들이 있습니다. 예를 들어, LinkedList 클래스가 Queue 인터페이스를 구현하고 있습니다. 간단한 큐를 만들어서 몇 가지 기본적인 연산을 수행하는 예제 코드 import java.util.LinkedList; import java.util.Queue; public class SimpleQueueExample { public static void main(String[] args) { // 큐 생성 Queue queue = new LinkedList(); // 큐에 데이터 추가 queue.off..

개발 2023.12.27

[java] 주민등록번호로 14세 미만 여부를 확인 코드

가입시 14세미만인지 아닌지 체크할 필요가 있다. 코드 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Date; public class AgeChecker { public static boolean isUnder14(String jumin) { // 주민등록번호에서 생년월일 추출 String birthYear = "19" + jumin.substring(0, 2); // 생년(YY) String birthMonth = jumin.substring(2, 4); // 생월(MM) String birthDay = jumin.substring(4, 6); // 생일(DD) // 생년월일 문자열을 Date 객..

개발 2023.12.15
728x90
반응형