Java大数据平台开发 学习笔记(41)—— java设计模式(享元模式)知识汇总

一、前言:

享元模式的注意事项与细节:

  1. 享元的理解:享即 “共享”,元即 “对象”。
  2. 系统中需要大量对象,这些对象需要消耗大量内存,并且这些对象可以外部化,则考虑享元模式。
  3. 享元模式大大减少了对象的创建,降低了程序内存的占用,提高了效率。

二、UML图:

在这里插入图片描述


三、享元模式:

3.1、代码实例:

Step 1) 创建 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;
    }
}

Step 2) 创建 WebSite 抽象类:

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

Step 3) 创建 ConcreteWebSite 实现类:

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

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

    @Override
    public void use(User user) {
        System.out.println("网站发布的形式为:"+type+"在使用中"+"... 使用者是:"+user.getName());
    }
}

Step 4) 创建 WebSiteFactory 类:

public class WebSiteFactory {
    private HashMap<String, ConcreteWebSite> pool = new HashMap<>();

    public WebSite getWebsiteCategory(String type){
        if(!pool.containsKey(type)){
            pool.put(type, new ConcreteWebSite(type));
        }
        return (WebSite) pool.get(type);
    }

    public int getWetSiteCount(){
        return pool.size();
    }
}

Step 5) 创建 main 方法:

public class Client {
    public static void main(String[] args) {
        WebSiteFactory factory = new WebSiteFactory();

        WebSite webSite1 = factory.getWebsiteCategory("新闻");
        webSite1.use(new User("tom"));

        WebSite webSite2 = factory.getWebsiteCategory("博客");
        webSite2.use(new User("jack"));

        WebSite webSite3 = factory.getWebsiteCategory("博客");
        webSite2.use(new User("smith"));

        WebSite webSite4 = factory.getWebsiteCategory("博客");
        webSite2.use(new User("jack"));

        System.out.println("网站的分类共有:" + factory.getWetSiteCount());
    }
}


• 由 ChiKong_Tam 写于 2020 年 10 月 19 日

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值