您的位置:首页 > 移动开发 > Android开发

(随记一)Android设计模式解析与实战_面对对象六大原则之单一职责原则

2016-12-16 18:51 387 查看

(随记一)Android设计模式解析与实战_面对对象六大原则之单一职责原则:

* 定义 : 一个类而言,应该竟有一个引起它变化的原因
* 简单来说就是 : 一个类应该是一组相关性很高的函数、数据的封装。
* 原则:两个完全不一样的功能不应该放在一个类中。一个类应该是一组相关性很高的函数、数据的封装。不断审视自己代码,根据具体业务与功能去划分


代码示例

public class ImageLoader {
//图片缓存
ImageCache mImageCache = new ImageCache();
private final ExecutorService mExecutorService;

//线程池数量为cpu数量
public ImageLoader() {
mExecutorService = Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());
}

private void displayImage(final String url, final ImageView imageView) {
final Bitmap bitmap = mImageCache.get(url);
if (bitmap != null) {
imageView.setImageBitmap(bitmap);
return;
} else {
imageView.setTag(url);
mExecutorService.submit(new Runnable() {
@Override
public void run() {
Bitmap netBitmap = downloadImage(url);
if (netBitmap == null) {
return;
} else {
if (imageView.getTag().equals(url)) {
imageView.setImageBitmap(netBitmap);
}
mImageCache.put(url, netBitmap);
}
}
});

}
}

/**
* 下载图片
*
* @param imageUrl
* @return
*/
public Bitmap downloadImage(String imageUrl) {
Bitmap bitmap = null;
try {
URL url = new URL(imageUrl);
final HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
bitmap = BitmapFactory.decodeStream(urlConnection.getInputStream());
urlConnection.disconnect();
} catch (Exception e) {
e.printStackTrace();
}
return bitmap;
}
}


-

/**
* Created by Administrator on 2016/12/16.
* 图片缓存类
*/

public class ImageCache {
LruCache<String, Bitmap> mImageCache;

public ImageCache() {
initImageCache();
}

private void initImageCache() {
//计算可使用的最大内存
final int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);
//取四分之一内存作为缓存
final int cacheSize = maxMemory / 4;
mImageCache = new LruCache<String, Bitmap>(cacheSize) {
@Override
protected int sizeOf(String key, Bitmap value) {
return value.getRowBytes() * value.getHeight() / 1024;
}
};
}

/**
* 写入缓存
*
* @param url
* @param bitmap
*/
public void put(String url, Bitmap bitmap) {
mImageCache.put(url, bitmap);
}

/**
* 获得缓存
*
* @param url
* @return
*/
public Bitmap get(String url) {
return mImageCache.get(url);
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式