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

猜你喜欢

转载自blog.csdn.net/qq_37993487/article/details/80142653