设计模式的应用场景(12)--享元模式

享元模式是一种为了减少大量相似对象的内存消耗而设计的模式,通过共享技术实现相同内容的对象共享。在实现文字注册码场景中,如‘好好学习,天天向上’,可以利用享元模式创建一个共享池,当需要使用文字时直接从池中获取,从而避免每次创建新对象的开销。此模式虽节省空间,但可能导致查找时间增加。
摘要由CSDN通过智能技术生成

享元模式

定义:采用一个共享来避免大量拥有相同内容对象的开销。这种开销中最常见、直观的就是内存的损耗。享元模式以共享的方式高效的支持大量的细粒度对象。

优点:节省空间。

缺点:如果需要维护的享元很多则查找的时候需要大量的时间,该模式以时间换空间。

小巩需要实现文字注册码,以“好好学习,天天向上”。如果采用每一个字都注册对象的话,以后再使用的时候,还需要重新创建。怎么办呢?
可以设立一个共享池,需要的时候从共享池里取。
代码也比较简单

public interface Flyweight {
   
    String getName();
}
public class HaoFlyweight implements Flyweight {
   
    public HaoFlyweight(String name) {
   
        this.name = name;
    }

    public String getName() {
   
        return name;
    }

    private String name;
}
public class XueFlyweight implements Flyweight {
   
    public XueFlyweight(String name) {
   
        this.name = name;
    }

    public String getName() {
   
        return name;
    }

    private String name;
}
。。。。。
public class ShangFlyweight implements Flyweight {
   
    public ShangFlyweight(String name) {
   
        this.name = name;
    }

    public String getName() {
   
        return name;
    }

    private String name;
}
import java.util.List;
import java.util.ArrayList;

public class FlyweightFactory {
   
    private List list 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值