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

来源:互联网 发布:泛突厥主义知乎 编辑:程序博客网 时间:2024/05/22 04:37

(随记一)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);            }        }
1 0