D語言動態創建對象-D最新功能
我認為這是D提供的又一個重量級的功能.閑言少敘,代碼說話!
保存為cre.d,使用dmd cre.d編譯.
Java代碼
module cre;
import std.stdio;
interface IPrinter
{
void print();
void init(char[] a);
}
class foo :IPrinter
{
void print()
{
writefln("foo OK "~fb);
}
void init(char[] a)
{
fb = " Hollo "~a;
}
char[] fb;
}
class fbb :IPrinter
{
void print()
{
writefln("fbb:OK! "~fb);
}
void init(char[] a)
{
fb = "Thank you "~a;
}
char[] fb;
}
//IOC Factory.
class Factory(T)
{
static T create(char[] Name)
{
T instance =cast(T)Object.factory(Name);
assert(instance);
return instance;
}
}
int main()
{
writefln("Factory Test!");
alias Factory!(IPrinter) PT;
IPrinter a = PT.create("cre.foo");
a.init("Walter!");
a.print();
IPrinter b = PT.create("cre.fbb");
b.init("Walter!");
b.print();
return 1;
}
module cre;
import std.stdio;
interface IPrinter
{
void print();
void init(char[] a);
}
class foo :IPrinter
{
void print()
{
writefln("foo OK "~fb);
}
void init(char[] a)
{
fb = " Hollo "~a;
}
char[] fb;
}
class fbb :IPrinter
{
void print()
{
writefln("fbb:OK! "~fb);
}
void init(char[] a)
{
fb = "Thank you "~a;
}
char[] fb;
}
//IOC Factory.
class Factory(T)
{
static T create(char[] Name)
{
T instance =cast(T)Object.factory(Name);
assert(instance);
return instance;
}
}
int main()
{
writefln("Factory Test!");
alias Factory!(IPrinter) PT;
IPrinter a = PT.create("cre.foo");
a.init("Walter!");
a.print();
IPrinter b = PT.create("cre.fbb");
b.init("Walter!");
b.print();
return 1;
}
根據這個功能,結合動態鏈接庫,可以提供簡單插件的功能了!!!
實現了IOC,針對抽象進行依賴.
更多信息請登陸http://61.191.27.74:802/ 最后,歡迎加入http://61.191.27.74:802/的會員
安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢】