<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??一站式輕松地調用各大LLM模型接口,支持GPT4、智譜、豆包、星火、月之暗面及文生圖、文生視頻 廣告
                ### 享元模式 運用共享技術有效地支持大量細粒度的對象。(摘抄) 這個模式每天在編碼的時候都在用,java中的String就用到了享元模式。 ~~~ String a = "123"; String b = "123"; ~~~ 這個只要認真學過基礎的童鞋應該都知道,這兩個String對象是同一個對象,都是指向“123”。在這個里面就是用的享元模式。 對于享元模式,我的理解就是新建相同的對象的時候,而且這兩個對象去做相同的,那么應該引用已經創建好的對象,而不是去新建一個相同的去浪費內存。這個時候肯定有人會問要是每個對象里面有自己的標識符號,兩個對象并不完全相同怎么辦,這時就是后面需要提到的——內部狀態和外部狀態。 簡單的共享對象 ~~~ import java.util.HashMap; import org.apache.commons.collections.map.HashedMap; public abstract class Flyweight { public abstract void Operation(int i); } public class ConcreteFlyweight extends Flyweight { @Override public void Operation(int i) { // TODO Auto-generated method stub System.out.println(""+i); } } //享元工廠用來判斷是否需要生成新的對象 public class FlyweightFactory { private HashMap<String, Flyweight> flyweights = new HashMap<String, Flyweight>(); public Flyweight getfFlyweight (String x) { if (!flyweights.containsValue(x)) { flyweights.put(x, new ConcreteFlyweight()); return flyweights.get(x); } else { return flyweights.get(x); } } } class Client { public static void main() { FlyweightFactory factory = new FlyweightFactory(); Flyweight flyweight1 = factory.getfFlyweight("x"); Flyweight flyweight2 = factory.getfFlyweight("x"); } } //有些Flyweight不能被共享那么就寫一個繼承的類直接調用就可以了 ~~~ 最簡單的共享就實現了,此時就是開始說一下內部狀態和外部狀態,在享元對象內部并且不會隨環境改變而改變的共享部分稱為內部狀態隨環境改變而改變,不可以共享的狀態稱為外部狀態 當你在寫程序的過程中如果能發現這些實例除了幾個參數外基本相同,那么把這些參數放到享元的外部,在方法調用時將它們傳遞進來,就可以通過享元共享大幅度的減少單個實例的數目。(摘抄) ~~~ public class User { private String name; public String getName() { return name; } public User(String name) { super(); this.name = name; } } public abstract class Flyweight { public abstract void Operation(int i); public abstract void whoUse(User user); } ~~~ ### 享元模式應用 如果一個應用程序使用了大量的對象,而大量的這些對象造成了很大的存儲開銷時就應該考慮使用;還有就是對象的大多數狀態可以外部狀態,如果刪除對象的外部狀態,那么可以用相對較少的共享對象取代很多組對象,此時可以考慮使用享元模式。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看