mixin

Tags:

mixin의 간단한 예
public class TimeStamp<T> extends T { …}

mixin의 특징
(1) 특정 인터페이스를 만족하는 클래스를 확장하는 단일화된 방법
(2) 다중상속에 대한 간단한 구현
(3) 애플리케이션 모듈의 디커플링: 예를들어, 자바나 C# 등의 언어는 어떤 클래스를 확장하고자 할 때, 그 클래스에 대한 참조를 클래스 내부에 하드코딩된 참조로 가지게되어 커플링이 높다.

C++의 예

#include
#include

using namespace std;

template
class TimeStamp: public T {
long timeStamp;
public:
TimeStamp() {}
TimeStamp(long timeStamp) { this->timeStamp = timeStamp; }

long getTimeStamp() { return timeStamp; }
};

template
class SerialNumber: public T {
long serialNumber;
public:
SerialNumber() {}
SerialNumber(long serialNumber) { this->serialNumber = serialNumber; }

long getSerialNumber() { return serialNumber; }
};

int main()
{
TimeStamp ts(20);
SerialNumber sn(10);

ts.append(“TimeStamp”);
sn.append(“SerialNumber”);

cout << ts << " / " << ts.getTimeStamp() << endl; cout << sn << " / " << sn.getSerialNumber() << endl; return EXIT_SUCCESS; } [/code] References
A first-class approach to genericity:
– http://www.cs.rice.edu/~eallen/papers/p079-allen.pdf

Mixins: Something Else You Can’t Do With Java Generics?
– http://www.artima.com/weblogs/viewpost.jsp?thread=132988

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *