面向对象的六大原则解析

来源:互联网 发布:mysql区分大小写查询 编辑:程序博客网 时间:2024/05/23 01:12

单一职责原则(优化代码的第一步)

  • 描述:大致说就是代码各个类之间职责分明,只做自己应该做的事情,当自己发生改变时能够不影响其他的类。
    所有的不想关的功能不应该都在同一个类中的完成,不然最后导致一个类中有很多的代码,也不利于阅读。
    一个优秀的程序员能够不断的优化自己的代码让它更具设计美感。
  • 例子:如写一个下载图片和缓存的功能

public class ImageLoader {

//图片缓存public LruCache<String, Bitmap> bitmapLruCache;//线程池 线程数量为cup数量ExecutorService executorService =     Executors.newFixedThreadPool(Runtime.getRuntime().availableProcessors());public ImageLoader() {    initCache();}/*** * 图片缓存 */public void initCache() {    int maxMemory = (int) (Runtime.getRuntime().maxMemory() / 1024);    int cacheSize = maxMemory / 4; //用于缓存图片    bitmapLruCache = new LruCache<String, Bitmap>(cacheSize) {        @Override        protected int sizeOf(String key, Bitmap value) {            return value.getRowBytes() * value.getHeight() / 1024;  //一张图片占据的内存        }    };}/** * 换成图片 * * @param url * @param imageView */public void displayImage(final String url, final ImageView imageView) {    imageView.setTag(url);    executorService.submit(new Runnable() {        @Override        public void run() {            Bitmap bitmap = downloadImage(url);            imageView.setImageBitmap(bitmap);            //缓存            bitmapLruCache.put(url, bitmap);        }    });}/** * 图片下载下来 * * @param url */private Bitmap downloadImage(String url) {    Bitmap bitmap = null;    try {        URL url1 = new URL(url);        HttpURLConnection httpURLConnection = (HttpURLConnection) url1.openConnection();        bitmap = BitmapFactory.decodeStream(httpURLConnection.getInputStream());    } catch (MalformedURLException e) {        e.printStackTrace();    } catch (IOException e) {        e.printStackTrace();    }    return bitmap;   } }
这样的功能就写在一个类中当其中一个方法中的代码改变时其它的也要跟着改变,所以我们要让代码更加的 灵活更具扩展: 可以把缓存功能和下载显示功能分开来写。
  ![修改后的UML图](http://note.youdao.com/favicon.ico) ```
public class ImageCache { //图片缓存 public LruCache

开闭原则(让程序刚稳定,更灵活)

里氏替换原则(构建扩展性更好的系统)

依赖倒置原则()

接口隔离原则

迪米特原则