수정
수정은 인스턴스화의 한 형태입니다. 개념을 구체화 할 때 제공 한 사전 정의처럼 추상적 인 것을 취하고 구체적으로 만듭니다.
가능한 유형의 추상 구문 트리에 서식하는 용어로 유형을 수정하도록 선택할 수 있습니다.
일부 언어에 대한 범용 구현을 제시하여 디자인 패턴을 구체화 할 수 있습니다. 예를 들어,
template<typename T> class Singleton {
public:
static T& Instance() {
static T me;
return me;
}
protected:
virtual ~Singleton() {};
Singleton() {};
}
싱글 톤 디자인 패턴을 C ++의 템플릿으로 수정합니다.
Hoare의 quicksort 아이디어를 원하는 프로그래밍 언어로 구현할 수 있습니다. 이런 맥락에서 저는 범주 이론의 개념을 하스켈 코드로 구체화하는 데 많은 시간을 할애합니다.
해당 언어에 대한 통역사로 언어를 수정할 수 있습니다. Perl 언어에 대한 Larry Wall의 아이디어는 Perl 인터프리터로 구체화됩니다.
데이터 구체화 하고 진공 패키지가 함께 공유 메모리에 어떻게 구성되어 있는지를 나타내는 그래프 등의 조건을 구체화.
반사
구체화의이면은 구체적인 것을 취하고 일반적으로 세부 사항을 잊어 버림으로써 추상화를 생성하는 반사 입니다. 추상화가 더 간단하거나 어떤 식 으로든 당신이 말하는 내용의 본질을 포착하기 때문에 이것을하고 싶을 것입니다.
Java, C # 등의 유형 시스템 리플렉션은 프로그래밍 언어의 구체적인 클래스를 가져 와서 클래스가 제공하는 멤버 목록에 대한 액세스를 제공하는 클래스의 추상 구조를 제공합니다. 여기서 우리는 유형의 구체적인 개념을 취하고 그 구조를 설명하는 추상적 인 용어를 생성하고 특정 값을 버립니다.
프로그래밍 언어를 구현으로 구체화하는 방법과 마찬가지로 때때로 반대 방향으로 갈 수 있습니다. 이것은 일반적으로 나쁜 생각으로 간주되지만 구현을 취하고 원하는 동작 속성에서 언어 사양을 반영하려고 할 수 있습니다. TeX는 Knuth, sans 사양에 의해 처음 구현 되었습니다. TeX의 모든 사양은 Knuth의 구현에서 반영되었습니다.
(좀 더 공식적으로 당신이 반사를 구체적인 영역에서 추상적 인 영역으로 데려가는 건망증의 펑터로 본다면, 이상적으로는 구체화는 반사에 인접 해있는 것이다.)
내가 유지 하는 리플렉션 패키지는 용어를 사용하여이를 나타내는 유형을 생성하는 reify 메서드를 제공 한 다음 새 용어를 생성 할 수있는 reflect 메서드를 제공합니다. 여기서 '콘크리트'도메인은 유형 시스템이고 추상 도메인은 용어입니다.