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;
}
}
Flyweight模式
最新推荐文章于 2024-09-04 20:36:45 发布