java设计模式之享元

java设计模式之享元模式

  1. 介绍:所谓享元看名称也很容易理解,就是共享相同的资源(对象),减少对象的创建即内存的占用.
  2. 情景引入:平时我们想去看电影,一般都会选择去电影院,和其他人共享同一套影片,我觉得这就是享元的思想.我们大可每一个人都自己买一套影片回家看,但是这明显有资源浪费.既然大家都看的是同样的东西,为什么不聚起来一起看呢,这样子只需要购买一套影碟就行了.
  3. 代码:
public class Movie {
    public String name;
    public Movie(String name){
        this.name = name;
        System.out.println("New film " + name + " is available.");
    }

    public void play(){
        System.out.println(name + " is playing");
    }
}

public class Cinema {
    private static final HashMap<String, Movie> movieList = new HashMap<>();

    public static void display(String name){
         Movie movie = movieList.get(name);
         if (movie == null){
             movie = new Movie(name);
             movieList.put(name, movie);
         }
         movie.play();
    }
}

上述代码很简单,一套电影就是资源,而电影院具有影片列表,假如有人需要播放影片XXX,它先找自己的影片列表中有没有,有的话直接播放,没有的话购买一份再播放,下一次如果有人来看这套电影只需要从列表中取出就行.
测试

Cinema.display("movie1");
Cinema.display("movie2");
Cinema.display("movie1");

// output:
New film movie1 is available.
movie1 is playing
New film movie2 is available.
movie2 is playing
movie1 is playing
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值