프로그래밍 이론

싱글톤 패턴 오직 한 개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공한다. 시스템 런타임, 환경 세팅에 대한 정보 등 인스턴스가 여러 개일 때 발생하는 문제들을 해결할 수 있는 패턴이다. 구조 Singleton - Instance() 연산을 정의하여 유일한 인스턴스로 접근할 수 있도록 한다. 유일한 인스턴스를 생성하는 책임을 맡는다. 기본 인터페이스 //싱글톤 클래스 public class Singleton { //자기 자신을 멤버로 갖는다. private static Singleton m_instance; public int a; private Singleton(){} //Instance() 클래스는 단일체 인스턴스를 생성하고 접근하는 책임을 가진다. public stat..
프로토타입 패턴 원형이 되는 객체를 사용하여 생성할 객체의 종류를 명시하고, 이렇게 만든 견본을 복사해서 새로운 객체를 생성하는데 목적은 둔 패턴이다. 구조 Prototype : 자신을 복제하는 데 필요한 인터페이스를 정의한다. ConcretePrototype - 자신을 복제하는 연산을 정의한다. Client - 원형 객체에 자기 자신의 복제를 요청하여 새로운 객체를 생성한다. 기본 인터페이스 namespace Prototype; //프로토타입 인터페이스 public interface Prototype { public Prototype Clone(); } //프로토타입 상속 클래스 public class ConcretePrototypeA : Prototype { private int a; priva..
빌더 패턴 복잡한 객체를 생성하는 방법과 표현하는 방법을 정의하는 클래스를 별도로 분리하여 서로 다른 표현이라도 이를 생성할 수 있는 동일한 절차를 제공하는 패턴이다. 생성자에 들어갈 매개변수들을 받아 객체를 생성하는 데 도움을 준다. 구조 Builder - Product 객체의 일부 요소들을 생성하기 위한 추상 인터페이스를 정의한다. ConcreteBuilder - Builder클래스에 정의된 인터페이스의 구현 서브클래스로, 제품의 부품들을 모아 빌더를 복합한다. 생성한 요소의 표현을 정리하고 관리한다. Director - Builder 인터페이스를 사용하는 객체를 합성한다. Product - 생성할 복합 객체를 표현한다. ConcreteBuilder는 제품의 내부 표현을 구축하고 복합 객체가 어떻..
추상 팩토리 패턴 상세화된 서브클래스를 정의하지 않고도 서로 관련성이 있거나 독립적인 여러 객체들을 한번에 생성하는 인터페이스를 제공하는 패턴이다. 구조 AbstractFactory - 개념적 제품에 대한 객체를 생성하는 연산으로, 인터페이스를 정의한다. ContreteFactory - 구체적인 제품에 대한 객체를 생성하는 연산은 구현한다. AbstractProduct - 개념적 제품에 대한 인터페이스를 정의한다. ConctreteProduct - 구체적으로 팩토리가 생성한 객체를 정의하고, AbstractProduct가 정의하는 인터페이스를 구현한다. Client - AbstractFactory와 AbstractProduct 클래스에 선언된 인터페이스를 사용한다. 기본 인터페이스 namespace A..
팩토리 메서드 패턴 어떤 클래스에 대한 인스턴스를 생성할 때 그에 대한 책임과 권한을 서브클래스에게 위임하는 패턴이다. 클라이언트에서 직접 new 키워드를 사용하여 생성하는 것이 아닌 객체 생성 전용 팩토리 클래스를 호출하고, 어떤 객체를 만들지 결정하는 서브 팩토리 클래스를 통해 객체를 생성한다. 구조 Product - 팩토리 메서드가 생성하는 객체의 인터페이스. ConcreteProduct - Product 클래스에 정의된 인터페이스를 실제로 구현한 서브클래스. Creater - Product 타입의 객체를 반환하는 팩토리의 인터페이스. Product 객체의 생성을 위해 호출한다. ConcreteCreater - ConcreteProduct 객체를 생성하는 코드의 구체적인 구현이 되어있는 서브클래스...
객체지향 언어를 사용하는 프로그래머들은 언제나 객체지향 프로그래밍, 객체지향적 소프트웨어를 설계해야 한다. 그렇다면 객체지향 프로그래밍이란 무엇일까? 객체지향 프로그래밍이란 프로그램을 하나의 덩어리가 아닌 수많은 객체(Object)로 나누고, 이러한 객체들 간의 상호작용을 통해 로직을 구성하는 프로그래밍 기법이다. 객체들을 모아 하나의 기능을 가진 컴포넌트(Component)를 구성하고, 컴포넌트 간의 상호작용을 통해 더 큰 시스템을 만들고, 더 나아가 컴포넌트를 재사용함으로써 더 효율적이고 유연한 프로그램을 만들 수 있는 게 큰 장점이다. 하지만 안타깝게도 우린 객체지향 언어를 배웠지만 유연하고, 근사하며, 재사용 가능한 객체지향 소프트웨어를 설계할 줄 모른다. 다형성도 알고, 캡슐화도 알고, 추상화도..
NewtronVania
'프로그래밍 이론' 카테고리의 글 목록 (5 Page)