`
dengwenwei121
  • 浏览: 36742 次
  • 性别: Icon_minigender_1
  • 来自: 湖南
文章分类
社区版块
存档分类
最新评论

享元模式

 
阅读更多

一、什么是享元模式

Flyweight模式也叫享元模式,是构造型模式之一,它通过与其他类似对象共享数据来减小内存占用。

二、享元模式的结构

三、享元模式的角色和职责

抽象享元角色:

所有具体享元类的父类,规定一些需要实现的公共接口。

具体享元角色:

抽象享元角色的具体实现类,并实现了抽象享元角色规定的方法。

享元工厂角色:
负责创建和管理享元角色。

package com.dw.test;

/*抽象享元角色:
所有具体享元类的父类,规定一些需要实现的公共接口。
具体享元角色:
抽象享元角色的具体实现类,并实现了抽象享元角色规定的方法。*/
public class Mycharter {
	private Character mychar;
   public Mycharter(Character mychar){
	   this.mychar=mychar;
   }
   public void display() {
  System.out.println(mychar);
   }
}

package com.dw.test;

import java.util.HashMap;
import java.util.Map;

//享元工厂角色:负责创建和管理享元角色。
public class MycharterFactory {
   private Map<Character,Mycharter> pool;
   public MycharterFactory(){
	   pool=new HashMap<Character, Mycharter>();
   }
   public Mycharter getMyCharter(Character character)
   {
	   Mycharter mycharter=pool.get(character);
	   if(mycharter==null)
	   {
		   mycharter=new Mycharter(character);
		   pool.put(character, mycharter);
	   }
	   return mycharter;
   }
}

package com.dw.test;

public class MianClass {
	/*
	 * 一、什么是享元模式 
	 * Flyweight模式也叫享元模式,是构造型模式之 一,它通过与其他类似对象共享数据来减小内存 占用。
	 * 三、享元模式的角色和职责 
	 * 抽象享元角色: 所有具体享元类的父类,规定一些需要实现的公共接口。 
	 * 具体享元角色:抽象享元角色的具体实现类,并实现了抽象享元角色规定的方法。
	 * 享元工厂角色:负责创建和管理享元角色。
	 */
	public static void main(String[] args) {
		Mycharter mycherter = new Mycharter('a');
		Mycharter mycherter1 = new Mycharter('b');
		Mycharter mycherter2 = new Mycharter('a');
		Mycharter mycherter3 = new Mycharter('c');
		mycherter.display();
		mycherter1.display();
		mycherter2.display();
		mycherter3.display();
		System.out.println(mycherter == mycherter2);
		System.out.println("----------------------------");
		// 创建享元工厂
		MycharterFactory mf = new MycharterFactory();
		Mycharter my1 = mf.getMyCharter('a');
		Mycharter my2 = mf.getMyCharter('b');
		Mycharter my3 = mf.getMyCharter('a');
		Mycharter my4 = mf.getMyCharter('c');
		my1.display();
		my2.display();
		my3.display();
		my4.display();
		System.out.println(my1 == my3);
	}
}



分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics