享元模式
享元模式运用共享技术有效地支持大量细粒度对象的复用。系统只使用少量的对象,而这些对象都很相似,状态变化很小,可以实现对象的多次复用。
享元模式实例之共享网络设备(无外部状态)
很多网络设备都是支持共享的,比如交换机和集线器等,多台计算机终端可以连接同一台网络设备,并通过该网络设备进行数据转发。
如类图可知,设备工厂的ArrayList存储着网络设备唯一实例,并可由其他终端共享他们。
下面是C++版本的实现
抽象享元类NetworkDevice
//抽象享元类NetworkDevice
class NetworkDevice{
public:
virtual string getType() = 0;
virtual void use() = 0;
};
具体享元类Switch
//具体享元类Switch
class Switch : public NetworkDevice{
public:
Switch(string type){
this->type = type;
}
string getType(){
return this->type;
}
void use(){
cout << "Linked by switch,type is " << this->type << endl;
}
private:
string