기본 모드:
1. 인터페이스 패턴: 여러 클래스가 유사한 서비스를 제공하는 경우, 인터페이스 패턴을 통해 서로 다른 서비스 제공자 클래스에서 제공하는 공통 서비스를 추상화하여 독립적인 인터페이스로 선언할 수 있습니다. 이를 통해 클라이언트 개체는 변경 없이 원활하게 다양한 서비스 공급자 클래스를 사용할 수 있습니다.
2. 추상 클래스 패턴: 관련 클래스 집합의 공통 기능을 일관되게 구현하는 프레임워크를 설계하는 데 사용할 수 있습니다. 인터페이스와 달리 인터페이스의 메서드는 서브클래스에서 구현되어야 합니다. 필요한 메소드는 추상 클래스에서 구현될 수 있으며 하위 클래스는 상속만 하면 되므로 중복된 메소드 구현이 줄어듭니다.
3. 프라이빗 메서드 패턴: 일부 메서드는 다른 메서드나 동일한 개체의 내부 클래스에서만 내부적으로 사용할 수 있습니다. 이 패턴에서는 이러한 메서드를 프라이빗 메서드로 설계하는 것이 좋습니다.
4. 접근자 패턴: 객체에서 모든 인스턴스 변수는 비공개로 선언되고, 객체의 공개 상태에 액세스하기 위해 공용 접근자 메서드가 제공됩니다. 고객은 접근자를 사용하여 객체를 한 상태에서 다른 상태로 변경할 수 있습니다. 객체는 자신의 개인 변수에 직접 접근할 수 있습니다. JSP의 javaBean은 이 패턴을 사용합니다.
5. 상수 데이터 관리자: 애플리케이션의 다양한 개체에서 사용되는 상수 데이터를 관리하기 위한 효과적인 저장 메커니즘을 설계하는 데 매우 적합합니다. 이 패턴은 애플리케이션에서 값이 영구적인 데이터가 다른 개체에 표시되도록 허용하기보다는 애플리케이션의 다른 개체가 액세스할 수 있도록 별도의 개체에 저장해야 함을 나타냅니다. 이러한 유형의 분리는 애플리케이션의 상수 데이터에 대해 유지 관리하기 쉬운 중앙 저장소를 제공합니다.
6. 불변 객체: 생성자에서 모든 인스턴스 변수를 설정하고 객체의 상태를 변경할 수 있는 다른 메소드를 제공하지 않습니다. 클래스 메소드를 재정의하여 상태를 변경할 가능성을 방지하기 위해 클래스를 팬 유형으로 선언합니다. 모든 인스턴스 변수는 fanal 유형으로 작성되므로 생성자 메소드를 통해서만 할당할 수 있습니다. 인스턴스 변수 중 하나에 객체에 대한 참조가 포함되어 있으면 해당 get 메소드 inggai가 실제로 객체의 복사본을 반환합니다. 객체 자체. 위의 메커니즘은 스레드 안전성을 보장하고 동시 액세스와 관련된 모든 문제를 자동으로 제거할 수 있습니다.
7. 모니터: 한 번에 하나의 스레드만 개체의 모든 메서드를 실행할 수 있도록 허용하기 위해 해당 개체에 대한 잠금을 획득합니다. 이는 Java에서 객체 메소드 선언에 동기화된 키워드를 사용하여 수행할 수 있습니다.
생성 모드:
역할: OO 애플리케이션에서 가장 일반적으로 수행되는 작업 중 하나를 처리합니다. 객체 생성은 일관되고 단순하며 제한된 메커니즘을 사용하여 객체를 생성하는 것을 지원합니다. 커플링의 생성.
1. 팩토리 메소드: 클라이언트 객체가 어떤 클래스를 인스턴스화해야 할지 모르는 경우 팩토리 메소드를 사용하여 클래스 계층 구조 또는 관련 클래스 그룹에서 해당 클래스의 인스턴스를 생성할 수 있습니다. 팩토리 메소드는 클라이언트 자체의 일부로 설계될 수도 있고 개별 클래스에서 설계될 수도 있습니다. 그중에서 팩토리 메서드를 포함하는 클래스나 그 하위 클래스에 따라 어떤 클래스가 선택되고 인스턴스화 방법이 결정됩니다.
2. 싱글톤: 지정된 클래스의 인스턴스가 하나만 있도록 보장하기 위해 제한된 개체 생성 메커니즘을 제공합니다.
3. 추상 팩토리: 클라이언트 개체가 인스턴스화할 실제 구체적인 클래스를 지정하지 않고도 관련 클래스 집합 내에서 클래스 인스턴스를 생성할 수 있습니다.
4. 프로토타입: 객체를 생성하는 간단한 방법, 즉 기존 객체에서 객체를 복사하는 방법을 제공합니다.
5. 생성기: 복잡한 개체 생성을 허용하고 개체의 유형 및 내용 정보만 제공할 수 있으며 개체 생성에 대한 세부 정보를 클라이언트에 투명하게 만듭니다. 이 접근 방식을 사용하면 동일한 구성 프로세스에서 서로 다른 객체 표현을 생성할 수 있습니다.