Flyweight模式

package net.liuyx.test;

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

import net.liuyx.test.FlyweightFactory.Flyweight;

public class FlyweightTest {
	public static void main(String[] args){
		Flyweight flyweight = FlyweightFactory.getFlyweight("研发中心");
		Flyweight flyweight2 = FlyweightFactory.getFlyweight("研发中心");
		Flyweight flyweight3 = FlyweightFactory.getFlyweight("设计部");
		Flyweight flyweight4 = FlyweightFactory.getFlyweight("销售部");
		VCard vCard1 = new VCard();
		vCard1.setFlyweight(flyweight);
		vCard1.setName("张三");
		vCard1.setGender("男");
		vCard1.setTitle("程序员");
		System.out.println(vCard1);
		
		VCard vCard2 = new VCard();
		vCard2.setFlyweight(flyweight2);
		vCard2.setName("李四");
		vCard2.setGender("男");
		vCard2.setTitle("程序员");
		System.out.println(vCard2);
		
		VCard vCard3 = new VCard();
		vCard3.setFlyweight(flyweight3);
		vCard3.setName("王丽");
		vCard3.setGender("女");
		vCard3.setTitle("设计人员");
		System.out.println(vCard3);
		
		VCard vCard4 = new VCard();
		vCard4.setFlyweight(flyweight4);
		vCard4.setName("David");
		vCard4.setGender("男");
		vCard4.setTitle("销售人员");
		System.out.println(vCard4);
		
		System.out.println(flyweight2 == flyweight);
	}
}
class FlyweightFactory{
	private static final FlyweightFactory factory = new FlyweightFactory();
	private static Map<String,Flyweight> maps = new HashMap<String,Flyweight>();
	private FlyweightFactory(){
	}
	public static Flyweight getFlyweight(String division){
		if(maps.get(division) == null){
			Flyweight flyweight = factory.new Flyweight(division);
			maps.put(division, flyweight);
			return flyweight;
		}else
			return maps.get(division);
	}
	public class Flyweight{
		String division;
		String company = "太平洋网络";
		String state = "中国上海";
		String zip = "550003";
		String address = "上海市徐汇区肇嘉浜路1117号太平洋数码大厦6-7层";
		public Flyweight(String division){
			this.division = division;
		}
		@Override
		public String toString() {
			return "division=" + division + ", company=" + company
					+ ", state=" + state + ", zip=" + zip + ", address="
					+ address;
		}
	}
}
class VCard{
	String name;
	String gender;
	String title;//头衔
	Flyweight flyweight;
	@Override
	public String toString() {
		return "VCard [name=" + name + ", gender=" + gender + ", title="
				+ title  + "," + flyweight + "]";
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getGender() {
		return gender;
	}
	public void setGender(String gender) {
		this.gender = gender;
	}
	public String getTitle() {
		return title;
	}
	public void setTitle(String title) {
		this.title = title;
	}
	public Flyweight getFlyweight() {
		return flyweight;
	}
	public void setFlyweight(Flyweight flyweight) {
		this.flyweight = flyweight;
	}
	
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值