JavaでHello World
Google
  HOME  |  基礎  |  掲示板  |  ツール |  書籍  |  デザインパターン  |  リンク  |  フィードバック
JavaでHello World > デザインパターン > Flyweightパターン  
メニュー
Home
情報交換掲示板
Factory Method
Abstract Factory
Builder
Prototype
Singleton
Adapter
Bridge
Composite
Decorator
Facade
Flyweight
Proxy
Chain Of Responsibility
Command
Interpreter
Iterator
Mediator
Memento
Observer
State
Strategy
Template Method
Visitor
  2003/07/25  田中宏和
Flyweightパターン
◆概要
多数の小さいオブジェクトを効率よくサポートするために共有を利用する
◆UML
◆ここでの環境
OS Windows XP
J2SE SDK 1.4.1_01
◆概念的なソースコード
FlyweightFactory.java(ここからダウンロード)
import java.util.*;

public class FlyweightFactory {
  HashMap pool = new HashMap();

  public FlyweightFactory() {
    pool.put("A" , new ConcreteFlyweight());
    pool.put("B" , new ConcreteFlyweight());
    pool.put("C" , new ConcreteFlyweight());
  }

  public Flyweight getFlyweight(String key) {
    return (Flyweight)pool.get(key);
  }
}
Flyweight.java(ここからダウンロード)
abstract class Flyweight {
  abstract public void operation(int extrinsicstate);
}
ConcreteFlyweight.java(ここからダウンロード)
public class ConcreteFlyweight extends Flyweight {
  public void operation(int extrinsicstate) {
    System.out.println("ConcreteFlyweight " + extrinsicstate);
  }
}
UnsharedConcreteFlyweight.java(ここからダウンロード)
public class UnsharedConcreteFlyweight extends Flyweight {
  public void operation(int extrinsicstate) {
    System.out.println("UnsharedConcreteFlyweight " + extrinsicstate);
  }
}
Client.java(ここからダウンロード)
public class Client {
  public static void main(String[] args) {
    int extrinsicstate = 10;

    FlyweightFactory factory = new FlyweightFactory();

    Flyweight fa = factory.getFlyweight("A");
    fa.operation(--extrinsicstate);

    Flyweight fb = factory.getFlyweight("B");
    fb.operation(--extrinsicstate);

    Flyweight fc = factory.getFlyweight("C");
    fc.operation(--extrinsicstate);

    UnsharedConcreteFlyweight fu = new
                                   UnsharedConcreteFlyweight();

    fu.operation(--extrinsicstate);
  }
}
 
◆実行
コマンドプロンプト
C:\JavaHello\Flyweight>javac *.java

C:\JavaHello\Flyweight>java Client
ConcreteFlyweight 9
ConcreteFlyweight 8
ConcreteFlyweight 7
UnsharedConcreteFlyweight 6

C:\JavaHello\Flyweight>

おおおお!実行できましたね!

 
 
  ネットで買えば断然お得!お買い物なら楽天市場
ツールの部屋 - Java関連の書籍 - デザインパターン - 情報交換掲示板 - HOME