poj-----Ultra-QuickSort(離散化+樹狀陣列)
要開發的小專案
傳統方案解決網站展示專案-問題分析
享元模式基本介紹
享元模式的原理類圖
內部狀態和外部狀態
享元模式應用例項
類圖:
以上是僅僅是享元模式的內部狀態
package com.flyweight;
|
package com.flyweight; private String type = "";//網站釋出的形式 //構造器 public ConcreteWebSite(String type) { this.type = type; } @Override public void use() { System.out.println("網站的釋出形式為:"+type+" ,正在使用中。。。"); } }
|
package com.flyweight; */ public class WebSiteFactory { //建立一個集合,充當池的作用 private Map<String ,ConcreteWebSite> pool = new HashMap<>(); public WebSite getWebSiteCategory(String type){ if(!pool.containsKey(type)){ //如果池中沒有,就建立一個網站,並放入到池中 pool.put(type,new ConcreteWebSite(type)); } return (WebSite)pool.get(type); } //獲取網站分類的總數(池中有多少個網站型別) public int getWebSiteCount(){ return pool.size(); } }
|
package com.flyweight;
|
執行結果: 網站的釋出形式為:新聞 ,正在使用中。。。 網站的釋出形式為:部落格 ,正在使用中。。。 網站的釋出形式為:部落格 ,正在使用中。。。 網站的釋出形式為:部落格 ,正在使用中。。。 網站工廠中一共有2個例項 |
接下來我們對上面的程式碼進行簡單地修改,新增上享元模式的外部狀態
程式碼實現:
package com.flyweight; |
package com.flyweight; |
package com.flyweight; |
package com.flyweight; |
package com.flyweight; |
執行結果: 網站的釋出形式為:新聞 ,正在使用中。。。使用者是:Tom 網站的釋出形式為:部落格 ,正在使用中。。。使用者是:jack 網站的釋出形式為:部落格 ,正在使用中。。。使用者是:amy 網站的釋出形式為:部落格 ,正在使用中。。。使用者是:smith 網站工廠中一共有2個例項 |