1. 程式人生 > 實用技巧 >無廢話設計模式(9)結構型模式--享元模式

無廢話設計模式(9)結構型模式--享元模式

0-前言

  享元模式定義:運用共享技術有效地支援大量細粒度的物件。

1-實現

1-1、簡單UML圖:

1-2、程式碼實現

//1、抽象父類(網站父類)
abstract class Website
{
    public abstract  void Use( String username);
}

//2、具體共享類(具體網站類)
class  ConcreteWebsite extends Website
{
    private  String websiteclassname;
    public  ConcreteWebsite(String name)
    {
        
this.websiteclassname = name; } @Override public void Use(String username) { System.out.println("網站分類:"+ websiteclassname +"--使用者:"+username); } } //3、享元工廠類(網站工廠) class WebsiteFactory { private Hashtable<String , Website> websites =new Hashtable<>();
public Website getWebsite(String classname) { if (!websites.containsKey(classname)) { websites.put(classname, new ConcreteWebsite(classname)); } return websites.get(classname); } }

客戶端:

        WebsiteFactory wf = new WebsiteFactory();
        Website fs 
= wf.getWebsite("企業官網"); fs.Use("張三"); Website fs1 = wf.getWebsite("部落格"); fs1.Use("李四"); Website fs2 = wf.getWebsite("小程式"); fs2.Use("王五");

執行結果:

2-應用場景簡單總結

1、一個程式使用了大量物件時;

2、由於使用了大量物件造成比較大的儲存開銷時;

3、物件的很多狀態都可以改變為外部狀態時;