无废话设计模式(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、对象的很多状态都可以改变为外部状态时;

posted @ 2020-08-03 13:50  程序员恒哥  阅读(198)  评论(0编辑  收藏  举报