设计模式之享元模式

享元模式

享元模式:运用共享技术支持大量细粒度的对象。常用于系统底层开发,解决系统的性能问题,向数据库连接池,里面都是创建好的连接对象,在这些连接对象中我们需要的则直接拿来用,避免重新创建。经典用用场景:池技术。

享元模式UML图

在这里插入图片描述

享元模式简单实现

User类:

public class User {
    private String name;

    public User(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

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

WebSite接口:

public interface  WebSite {
    void use(User user);
}

ConcreteWebSite类:

public class ConcreteWebSite implements WebSite {
    private String type = "";

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

    public void use(User user) {
        System.out.println("网站的发布形式为"+type+"用户名"+user.getName());
    }
}

Factory类:

public class Factory {
    private HashMap<String,WebSite> map = new HashMap<String, WebSite>();

    public WebSite getWebSite(String type){
        if(!map.containsKey(type)){
            map.put(type,new ConcreteWebSite(type));
        }

        return (WebSite)map.get(type);
    }

    public int getWebSiteCount(){
        return map.size();
    }
}

测试类:

public class Test {
    public static void main(String[] args) {
        Factory factory = new Factory();
        WebSite webSite = factory.getWebSite("博客");
        webSite.use(new User("小郭"));
        WebSite webSite2 = factory.getWebSite("博客");
        webSite2.use(new User("小邹"));
        int i = factory.getWebSiteCount();
        System.out.println(i);
        //网站的发布形式为博客用户名小郭
		//网站的发布形式为博客用户名小邹
		//1

    }
}

总结

享元模式:“享”就表示共享,“元”便是对象。系统中有大量对象,这些对象消耗了大量内存,并且对象的大部分可以外部化是,我么就可以考虑使用享元模式。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值