无废话设计模式(9)结构型模式--享元模式
0-前言
享元模式定义:运用共享技术有效地支持大量细粒度的对象。
1-实现
1-1、简单UML图:

1-2、代码实现
//1、抽象父类(网站父类)
abstract class Website
{
public abstract void Use( String username);
}
//2、具体共享类(具体网站类)
class ConcreteWebsite extends Website
{
private String websiteclassname;
public ConcreteWebsite(String name)
{
this.websiteclassname = name;
}
@Override
public void Use(String username)
{
System.out.println("网站分类:"+ websiteclassname +"--用户:"+username);
}
}
//3、享元工厂类(网站工厂)
class WebsiteFactory
{
private Hashtable<String , Website> websites =new Hashtable<>();
public Website getWebsite(String classname)
{
if (!websites.containsKey(classname))
{
websites.put(classname, new ConcreteWebsite(classname));
}
return websites.get(classname);
}
}
客户端:
WebsiteFactory wf = new WebsiteFactory();
Website fs = wf.getWebsite("企业官网");
fs.Use("张三");
Website fs1 = wf.getWebsite("博客");
fs1.Use("李四");
Website fs2 = wf.getWebsite("小程序");
fs2.Use("王五");
运行结果:

2-应用场景简单总结
1、一个程序使用了大量对象时;
2、由于使用了大量对象造成比较大的存储开销时;
3、对象的很多状态都可以改变为外部状态时;
赞 (0)
