14.设计模式-享元模式

//1.定义抽象类
//2.定义接口实现
//3.定义工厂类
//4.特有属性
//5.测试

public abstract class Website {
public abstract void use(User user);
}

public class User {

private String name;

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}
}

public class ConcreteWebSite extends Website{

//共享属性
private String type=""; //类型

public ConcreteWebSite(String type) {
this.type = type;
}

@Override
public void use(User user) {
//user 特有属性
System.out.println("类型:"+type+",name="+user.getName());
}
}

package com.serlyf.flyweigt;

import java.util.HashMap;

//网站工厂类
public class WebsiteFactory {
//集合,充当池的作用
private HashMap<String, ConcreteWebSite> pool = new HashMap<String, ConcreteWebSite>();

//根据类型,返回一个结果,如果没有就创建,并放入池中并返回

public Website getWebSiteCategory(String type) {
//没有就创建一个并放入池中
if (!pool.containsKey(type)) {
pool.put(type, new ConcreteWebSite(type));
}

return (Website) pool.get(type);
}
}

public class Test {

public static void main(String[] args) {
WebsiteFactory factory=new WebsiteFactory();
Website website1 =factory.getWebSiteCategory("AAA");
User user=new User();
user.setName("张三");
website1.use(user);
}
}

posted @ 2022-10-08 21:55  NIANER2011  阅读(36)  评论(0)    收藏  举报