一個(gè)形狀基類.. 一個(gè)圓 一個(gè)矩形。。。 一個(gè)工廠根據(jù)參數(shù)返回形狀子類 老掉牙的類名..英文不好...
——————————————-java——————————————————-
形狀基類
package?com.shiji.gongchang;
public?interface?XingZhuang?{
????????void???Run();
}package?com.shiji.gongchang;
//圓形類?繼承自形狀
public?class?Circle??implements?XingZhuang?{
????@Override
????public?void?Run()?{
????????//?TODO?Auto-generated?method?stub
????????System.out.println("Im?Cirlce!");
????}
}package?com.shiji.gongchang;
//矩形類??繼承自形狀
public?class?Rectangle?implements?XingZhuang?{
????@Override
????public?void?Run()?{
????????//?TODO?Auto-generated?method?stub
????????System.out.println("Rectangle!");
????}
}工廠
package?com.shiji.gongchang;
public?class?XingZhuangFactory?{
????public?XingZhuang?CreateXingzhuang(String?obj)
????{
????????????if(obj=="矩形")
????????????{
????????????????return??new?Rectangle();
????????????}else?if?(obj=="圓")?{
????????????????return?new?Circle();
????????????}
????????????return?null;
????}
}測(cè)試
//工廠模式
public?class?GongChangMoshi?{
????public?static?void?main(String[]?args)?{
????????XingZhuangFactory??xingZhuangFactory??=??new?XingZhuangFactory();
????????xingZhuangFactory.CreateXingzhuang("矩形").Run();
????????xingZhuangFactory.CreateXingzhuang("圓").Run();
????}
????//靜態(tài)方法?加載C++類庫(kù)??test.dll
????static?{
?????????System.loadLibrary("JniTest");
????}
}——————————————-C++——————————————————-
形狀基類
#pragma?once
class?Xingzhuang
{
public:
????virtual?void?Run()=0;
????Xingzhuang();
????~Xingzhuang();
};圓…
#pragma?once
#include?"Xingzhuang.h"
class?Circle?:public?Xingzhuang
{
public:
????virtual?void?Run();
????Circle();
????~Circle();
};
cpp:
#include?"stdafx.h"
#include?"Circle.h"
Circle::Circle()
{
}
Circle::~Circle()
{
}
void?Circle::Run()
{
????printf("Im?Circle~!");
}方塊,…
#pragma?once
#include?"Xingzhuang.h"
class?Rectangle??:public?Xingzhuang
{
public:
????virtual?void?Run();
????Rectangle();
????~Rectangle();
};
cpp:
#include?"stdafx.h"
#include?"Rectangle.h"
Rectangle::Rectangle()
{
}
Rectangle::~Rectangle()
{
}
void?Rectangle::Run()
{
????printf("Im?Rectangle!");
}工廠 ? ? ? ? ? ? ? ? ? ?-,-
#pragma?once
#include?"Xingzhuang.h"
enum?_Xtype
{
????_rectangle=0,
????_circle=1
};
class?Factory
{
public:
????Factory();
????Xingzhuang*??Create(_Xtype??t);
????~Factory();
};
cpp:
#include?"stdafx.h"
#include?"Factory.h"
#include?"Circle.h"
#include?"Rectangle.h"
Factory::Factory()
{
}
Factory::~Factory()
{
}
Xingzhuang*??Factory::Create(_Xtype??t)
{
????if?(t==_Xtype::_rectangle)
????{
????????Rectangle*??p?=?new?Rectangle();
????????return?p;
????}else?if?(t==_Xtype::_circle)
????{
????????Circle*p?=?new?Circle();
????????return?p;
????}
????return?NULL;
}demo:
#include?"stdafx.h"
#include?"Factory.h"?
inline?void?test(_Xtype??t)
{
????Factory*?f?=?new?Factory();
????if?(f)
????{
????????Xingzhuang*?x?=?NULL;
????????x?=?f->Create(t);
????????if?(x)
????????{
????????????x->Run();
????????????delete?x;
????????}
????????delete?f;
????}
}
int?main()
{?
????test(_Xtype::_circle);
????test(_Xtype::_rectangle);
????return?0;
} 




