flyweightfactory.java
来自「java与模式 一书的源码」· Java 代码 · 共 64 行
JAVA
64 行
package com.javapatterns.flyweight.composite;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
public class FlyweightFactory
{
private HashMap flies = new HashMap();
/**
* @link aggregation
* @directed
* @clientRole Flyweights
*/
private Flyweight lnkFlyweight;
public FlyweightFactory(){}
public Flyweight factory(String compositeState)
{
ConcreteCompositeFlyweight compositeFly = new ConcreteCompositeFlyweight();
int length = compositeState.length();
Character state = null;
for(int i = 0; i < length; i++)
{
state = new Character(compositeState.charAt(i) );
System.out.println("factory(" + state + ")");
compositeFly.add( state, this.factory( state) );
}
return compositeFly;
}
public Flyweight factory(Character state)
{
if ( flies.containsKey( state ) )
{
return (Flyweight) flies.get( state );
}
else
{
Flyweight fly = new ConcreteFlyweight( state );
flies.put( state , fly);
return fly;
}
}
public void checkFlyweight()
{
Flyweight fly ;
int i = 0 ;
System.out.println("\n==========checkFlyweight()=============");
for ( Iterator it = flies.entrySet().iterator() ; it.hasNext() ; )
{
Map.Entry e = (Map.Entry) it.next();
System.out.println( "Item " + (++i) + " : " + e.getKey());
}
System.out.println("\n==========checkFlyweight()=============");
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?