#include <iostream>
using namespace std;
// C# : .Net Remoting
// JAVA : RMI
// COM : 분산COM
// 원격제어에 있는 메소드를 호출하겠다.
// proxy ( foo(1, 2) ) -> 마샬리-> 스텁-> 서버측 foo호출
// proxy를 제대로 써보자.
class Printer
{
public:
Printer()
{
cout << "Warming up" << endl;
for ( int i = 0; i < 1000000000; ++i );
cout << "OK..." << endl;
}
void print() const
{
cout << "Printer::print" << endl;
}
void print_time() const
{
cout << "print_time()" << endl;
}
};
// printer를 대신 할 proxy를 만든다.
// 대행자를 만들어서 사용하도록 하자.
class PrinterProxy
{
Printer* p;
public:
void print_time() const
{
cout << "print_time()" << endl;
}
void print() const
{
// 진짜 객체가 필요하면 만들어서 사용한다.
if ( p == 0 )
p = new Printer;
p->print();
}
};
void main()
{
Printer p;
p.print_time();
}