1. 程式人生 > 實用技巧 >java 後臺介面另起一個執行緒執行其他業務

java 後臺介面另起一個執行緒執行其他業務

4.原型模式

4.1 定義

  用原型例項指定建立物件的種類,並且通過複製這些原型建立新的物件。

4.2 特點

  ■ 效能優良:原型模式是在記憶體二進位制流的複製,要比直接new一個物件效能好,特別是在一個迴圈體內產生大量的物件時,原型模式可以更好地體現其優點。

  ■逃避建構函式的約束:這既是優點也是缺點,直接在記憶體中複製,建構函式是不會執行的,因此減少了約束,需要在實際應用時進行權衡考慮。

4.3 使用場景

  ■ 資源優化場景,類初始化需要消化非常多的資源,這個資源包括資料、硬體資源等。

  ■ 效能和安全要求的場景,通過new產生一個物件需要非常煩瑣的資料準備或訪問許可權,可以使用原型模式。

  ■ 一個物件多個修改者的場景,一個物件需要提供給其他物件訪問,而且各個呼叫者可能都需要修改其值時,可以考慮使用原型模式複製多個物件供呼叫者使用。

4.4 c++原始碼例程

 1 #include <iostream>
 2 using namespace std;
 3 //具體的實現類
 4 class Product
 5 {
 6 public:
 7     Product(int id, string name):m_id(id),m_name(name)
 8     {
 9         cout << "Product() id address:
" << &m_id << endl; 10 cout << "Product() name address:" << &m_name << endl; 11 } 12 13 //關鍵程式碼拷貝建構函式 14 Product(const Product& obj) 15 { 16 this->m_id = obj.m_id; 17 this->m_name = obj.m_name; 18 cout << "
Product(const Product& obj) id address:" << &m_id << endl; 19 cout << "Product(const Product& obj) name address:" << &m_name << endl; 20 } 21 //關鍵程式碼克隆函式,返回return new Sheep(*this) 22 Product* clone() 23 { 24 return new Product(*this); 25 } 26 void show() 27 { 28 cout << "id :" << m_id << endl; 29 cout << "name:" << m_name.data() << endl; 30 } 31 private: 32 int m_id; 33 string m_name; 34 }; 35 int main() 36 { 37 Product* s1 = new Product(1, "abs"); 38 s1->show(); 39 Product* s2 = s1->clone(); 40 s2->show(); 41 42 delete s1; 43 s1 = NULL; 44 delete s2; 45 s2 = NULL; 46 return 0; 47 }