转载

Java设计模式——外观模式

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/mingyunxiaohai/article/details/91358206

外观模式:隐藏了系统的复杂性,为子系统中的一组接口提供了一个统一的访问接口。高内聚低耦合。

外观模式非常简单

例子:比如一个网络框架一般都有缓存策略,首先从内存中查找,找不到在去硬盘中查找,还找不到在去网络上下载。

下面开始先定义几个接口

public interface MemoryCache {
    Bitmap findFromMemory(String url);
}
public interface DiskCache {
    Bitmap findFromDisk(String url);
}
public interface NetworkCache {
    InputStream findFromNetwork(String url);
}

定义实现类

public class MemoryCacheImpl implements MemoryCache {
    @Override
    public Bitmap findFromMemory(String url) {
        System.out.println("从内存中查找");
        return null;
    }
}
public class DiskCacheImpl implements DiskCache {
    @Override
    public Bitmap findFromDisk(String url) {
        System.out.println("从硬盘查找");
        return null;
    }
}
public class NetworkCacheImpl implements NetworkCache {
    @Override
    public InputStream findFromNetwork(String url) {
        System.out.println("从网络获取");
        return null;
    }
}

一般情况下回这么调用

MemoryCache memoryCache = new MemoryCacheImpl();
        memoryCache.findFromMemory("http...");

        DiskCache diskCache = new DiskCacheImpl();
        diskCache.findFromDisk("http...");

        NetworkCache networkCache = new NetworkCacheImpl();
        networkCache.findFromNetwork("http...");

如果使用外观模式,把这几个类封装到一个类中,使用起来就方便很多了如下

public class Facade {

    private String url;
    private MemoryCache mMemoryCache;
    private DiskCache mDiskCache;
    private NetworkCache mNetworkCache;

    public Facade(String url) {
        this.url = url;
        mMemoryCache = new MemoryCacheImpl();
        mDiskCache = new DiskCacheImpl();
        mNetworkCache = new NetworkCacheImpl();
    }

    public void load(){
       mNetworkCache.findFromNetwork(url);
       mDiskCache.findFromDisk(url);
       mNetworkCache.findFromNetwork(url);
    }
}

使用

Facade facade = new Facade("http...");
 facade.load();

效果跟之前一想,看起来就清爽很多了。

原文  https://blog.csdn.net/mingyunxiaohai/article/details/91358206
正文到此结束
Loading...