设计模式之《享元模式》

什么是享元模式

享元模式是一种结构型设计模式,旨在减少应用程序中对象的数量。 在享元模式中,对象被分解为可共享和不可共享的部分。可共享部分被重用,由于应用程序中相同对象的需求少,这导致应用程序的内存占用较小。

为什么用享元模式

在许多应用程序中,存在需要实例化大量相同或相似对象的情况。使用传统的创建对象的方式,将占用大量内存。在这种情况下,享元模式是一种很好的解决方案。将可共享的部分抽取出来,通过共享减少内存的消耗。

工作中用在哪里

在Android中,我们经常需要使用图片、字体等资源。如果每次都创建新的对象,内存将会很快被占满。这是我们可以使用享元模式来重用一些资源对象。比如,我们可以使用BitmapFactory.Options对象来共享同一个图片资源。

设计思路

在享元模式中,需要分离可共享的和不可共享的对象部分。我们需要定义一个工厂来创建对象,并通过工厂管理对象的共享和重用。我们在创建对象时,会首先从工厂中查找是否已经存在相同的对象,如果存在则直接返回这个对象,否则创建一个新的对象并加入到工厂中。

享元模式的代码实现

public class BitmapFactory {
    
    
    private static Map<String, Options> optionsCache = new HashMap<>();
    public static Options decodeOptions(String filePath) {
    
    
        if (optionsCache.containsKey(filePath)) {
    
    
            return optionsCache.get(filePath);
        } else {
    
    
            Options options = new Options();
            options.inJustDecodeBounds = true;
            BitmapFactory.decodeFile(filePath, options);
            options.inJustDecodeBounds = false;
            optionsCache.put(filePath, options);
            return options;
        }
    }
}

通过调用decodeOptions方法来创建Options对象并重用以前创建的相同对象。

总结

享元模式是一种非常有用的设计模式,可用于减少应用程序中创建对象的数量。通过抽离出可共享的部分并重用来实现内存优化。在Android应用程序中,此模式特别有用。我们可以使用该模式来重用图片、字体等资源对象。

猜你喜欢

转载自blog.csdn.net/weixin_45112340/article/details/129922989
今日推荐