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

大叔楊發表於2020-08-03

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、物件的很多狀態都可以改變為外部狀態時;

相關文章