JavaÉè¼ÆÄ£Ê½Ö®Flyweightģʽ
GOF£ºÔËÓù²Ïí¼¼ÊõÓÐЧµØÖ§³Ö´óÁ¿Ï¸Á£¶ÈµÄ¶ÔÏó¡£
½âÊÍһϸÅÄҲ¾ÍÊÇ˵ÔÚÒ»¸öϵͳÖÐÈç¹ûÓжà¸öÏàͬµÄ¶ÔÏó£¬ÄÇôֻ¹²ÏíÒ»·Ý¾Í¿ÉÒÔ
ÁË£¬²»±ØÃ¿¸ö¶¼È¥ÊµÀý»¯Ò»¸ö¶ÔÏó¡£±ÈÈç˵£¨ÕâÀïÒýÓÃGOFÊéÖеÄÀý×Ó£©Ò»¸öÎı¾ÏµÍ³£¬Ã¿¸ö×Öĸ¶¨Ò»¸ö¶ÔÏó£¬ÄÇô´óСд×Öĸһ¹²¾ÍÊÇ52¸ö£¬ÄÇô¾ÍÒª¶¨Òå
52¸ö¶ÔÏó¡£Èç¹ûÓÐÒ»¸ö1MµÄÎı¾£¬ÄÇô×ÖĸÊÇºÎÆäµÄ¶à£¬Èç¹ûÿ¸ö×Öĸ¶¼¶¨ÒåÒ»¸ö¶ÔÏóÄÇôÄÚ´æÔç¾Í±¬ÁË¡£ÄÇôÈç¹ûÒªÊÇÿ¸ö×Öĸ¶¼¹²ÏíÒ»¸ö¶ÔÏó£¬ÄÇô¾Í´ó´ó
½ÚÔ¼ÁË×ÊÔ´¡£
ÔÚFlyweightģʽÖУ¬ÓÉÓÚÒª²úÉú¸÷ÖÖ¸÷ÑùµÄ¶ÔÏó£¬ËùÒÔÔÚ
Flyweight(ÏíÔª)ģʽÖг£³öÏÖFactory ģʽ¡£FlyweightµÄÄÚ²¿×´Ì¬ÊÇÓÃÀ´¹²ÏíµÄ,Flyweight
factory¸ºÔðά»¤Ò»¸ö¶ÔÏó´æ´¢³Ø£¨Flyweight
Pool£©À´´æ·ÅÄÚ²¿×´Ì¬µÄ¶ÔÏó¡£FlyweightģʽÊÇÒ»¸öÌá¸ß³ÌÐòЧÂʺÍÐÔÄܵÄģʽ,»á´ó´ó¼Ó¿ì³ÌÐòµÄÔËÐÐËÙ¶È.Ó¦Óó¡ºÏºÜ¶à£¬ÏÂÃæ¾Ù¸öÀý×Ó£º
Ïȶ¨ÒåÒ»¸ö³éÏóµÄFlyweightÀࣺ
package Flyweight;
public abstract class Flyweight
...
{
¡¡public abstract void operation();
}//end abstract class Flyweight
ÔÚʵÏÖÒ»¸ö¾ßÌåÀࣺ
package Flyweight;
public class ConcreteFlyweight extends Flyweight
...
{
¡¡private String string;
¡¡public ConcreteFlyweight(String str)
¡¡...
¡¡{
string = str;
¡¡}//end ConcreteFlyweight(...)
¡¡public void operation()
¡¡...
¡¡{
System.out.println("Concrete---Flyweight : " + string);
¡¡}//end operation()
}//end class ConcreteFlyweight
ʵÏÖÒ»¸ö¹¤³§·½·¨Àࣺ
package Flyweight;
import java.util.Hashtable;
public class FlyweightFactory
...
{
¡¡private Hashtable flyweights = new Hashtable();//----------------------------1
¡¡public FlyweightFactory() ...{}
¡¡public Flyweight getFlyWeight(Object obj)
¡¡...
¡¡{
Flyweight flyweight = (Flyweight) flyweights.get(obj);//----------------2
if(flyweight == null) ...{//---------------------------------------------------3
¡¡//²úÉúеÄConcreteFlyweight
¡¡flyweight = new ConcreteFlyweight((String)obj);
¡¡flyweights.put(obj, flyweight);//--------------------------------------5
}
r
Ïà¹ØÎĵµ£º
ÏÈÀ´Á˽âÒ»ÏÂÁ´±íģʽµÄÔÀí£º
Ê×ÏÈдһ¸öJavaBean£¬ÄÚÈÝÊÇÒªÌí¼ÓµÄÔªËØºÍ¸ÃÔªËØµÄ½Úµã¡£
public class NodeBean implements Serializable
{
private Object data; //ÔªËØ±¾Éí
private NodeBean next; //ÏÂÒ»¸ö½Úµã
&n ......
1£¬¸ÅÊö£ºÏß³ÌµÄ¹ÒÆð²Ù×÷ʵÖÊÉϾÍÊÇʹÏ߳̽øÈë“·Ç¿ÉÖ´ÐД״̬Ï£¬ÔÚÕâ¸ö״̬ÏÂCPU²»»á·Ö¸øÏß³Ìʱ¼äƬ£¬½øÈëÕâ¸ö״̬¿ÉÒÔÓÃÀ´ÔÝÍ£Ò»¸öÏ̵߳ÄÔËÐУ»ÔÚÏß³Ì¹ÒÆðºó£¬¿ÉÒÔͨ¹ýÖØÐ»½ÐÑÏß³ÌÀ´Ê¹Ö®»Ö¸´ÔËÐС£µ±Ò»¸öÏ߳̽øÈë“·Ç¿ÉÖ´ÐД״̬£¬¼´¹ÒÆð״̬ʱ£¬±ØÈ»´æÔÚijÖÖÔÒòʹÆä²»ÄܼÌÐøÔËÐУ¬ÕâЩÔÒò¿ÉÄÜ ......
public static String byteToString(byte src)
{
String desc = null;
int i = 0; //È¡1¸ö×Ö½Ú
i = src&0xFF;
desc = Integer.toHexString(i);
if (desc.length() == 1)
......
JavaÉè¼ÆÄ£Ê½Ö®Facadeģʽ GOF¡¶Éè¼ÆÄ£Ê½¡·Ò»Êé¶ÔFacadeģʽÊÇÕâÑùÃèÊöµÄ:
¡¡¡¡Îª×ÓϵͳÖеÄÒ»×é½Ó¿ÚÌṩһ¸öͳһ½Ó¿Ú¡£Facadeģʽ¶¨ÒåÁËÒ»¸ö¸ü¸ß²ãµÄ½Ó¿Ú£¬Ê¹×Óϵͳ¸ü¼ÓÈÝÒ×ʹÓá£
¡¡¡¡´óÖÂÒâ˼ÊÇ˵£ºÊ¹ÓÃÒ»ÖÖ±ÈÔÓз½Ê½¸ü¼òµ¥µÄ°ì·¨Óëϵͳ½»»¥¡£ÀýÈ磬ÎÒÃǰÑÒ»¸öºÜÖØÒªµÄÎļþ£¬·ÅÔÚÁ˵ڶþ³éÌëÀ¶øµÚ¶þ¸ö³éÌëµÄÔ ......