Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android Ap 開發 設計模式第四篇:工廠方法模式

Android Ap 開發 設計模式第四篇:工廠方法模式

編輯:Android開發實例

  Factory Method Pattern

模板模式的衍生品?

  以Template Method Pattern 架構獲取產生對象實例的工廠就是Factory Method Pattern。

  工廠方法模式在父類規定對象的創建方法,但並沒有深入到較具體的類名。所有具體的完整內容 都放在子類。根據這個原則,我們可以大致分成產生對象實例的大綱(框架)和實際生產對象實例的類兩方面。

 

場景模擬

  以一個工廠進廠打工為原型,工人們進廠須先登記信息,由所登記的信息進入創建工卡,工人們每天進廠必須使用工卡打卡,開始一天的勞動。以此為例,進行編程,設計UML圖如下:


 

程序實現

 

  抽象類Product定義抽象方法create ()表示創建用工card 信息和use () 表示用戶使用card

  抽象類Factory實現方法create 的抽象類,這裡就是我們上文所說的為什麼是模板方法模式衍生品。和定義抽象方法createProduct()、抽象方法registerProduct() 交由子類負責完成 。

  類IDcard 繼承自Product 實現方法use 和create

  類IDCardFactory 繼承 自Factory 實現方法createProduct、registerProduct

 

 

  Product 抽象類

 

public abstract class Product {
    
    public abstract String create();
    
    public abstract String use();
}

 

  Factory 抽象類

 

public abstract class Factory {
    public final Product create(String owner) {
        Product p = createProduct(owner);
        registerProduct(p);
        return p;
    }

    protected abstract Product createProduct(String owner);

    protected abstract void registerProduct(Product product);
}

 

  IDCard 類

 

public class IDCard extends Product{

    private String owner;
    
    
     
    public IDCard(String owner) {
        // TODO Auto-generated constructor stub
 
        this.owner=owner;
    }
    
    
    @Override
    public String use() {
        // TODO Auto-generated method stub
        return "使用"+owner+"的卡";
    }
    
    public String getOwner(){
        return owner;
    }


    @Override
    public String create() {
        // TODO Auto-generated method stub
        return "建立 "+owner+"的卡";
    }
}

 

  IDCardFactory 類

 

public class IDCardFactory extends Factory{

    private Vector<String> owners=new Vector<String>();
    
    
    
    @Override
    protected Product createProduct(String owner) {
        // TODO Auto-generated method stub
        return new IDCard(owner);
    }

    @Override
    protected void registerProduct(Product product) {
        // TODO Auto-generated method stub
        owners.add(((IDCard)product).getOwner());
    }
    
    public Vector<String> getOwners(){
        return owners;
    }

}

 

界面代碼實現 FatoryMethodActivity:

 

public class FatoryMethodActivity extends Activity implements OnClickListener {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        ((Button) findViewById(R.id.Button01)).setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub

        Factory factory = new IDCardFactory();
        Product card1 = factory.create("terry");
        Product card2 = factory.create("paul");
        Product card3 = factory.create("jim");
        ((EditText) findViewById(R.id.EditText01)).setText(card1.create()+","
                + card1.use() + "\n" + card2.create() +","+ card2.use() + "\n"
                + card3.create() +","+ card3.use());
    }
}

 

最終實現效果:

 

  代碼下載:

工廠方法模式

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved