Java学习笔记程序员技术干货

一遍看懂面向对象六大原则

2016-09-25  本文已影响204人  KaelQ

1.单一职责

2.开闭原则

3.里氏替换原则

4.依赖倒置原则

5.接口隔离规则

public void file(){
    FileOutputStream f=null;
    ……
    if(f!=null){
        try{
            f.close(); 
        }catch(IOExeption e){
            e.printStackTrace();
        }
    }
}

这里的关闭代码太过丑陋,而且这里只是使用该类的关闭功能,所以建立一个工具类

public final class CloseUtils {
    public static void closeNow(Closeable closeable) {
        if (closeable != null) {
            try {
                closeable.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

原代码变成

public void file(){
        FileOutputStream f=null;
        ……
        CloseUtils.closeNow(f);
}

这里不仅使用了依赖倒置,而且依赖关系由原来的FileOutputStream类转为最小关系接口——关闭接口Closeable类,它只需要知道这个对象是可关闭的,其他一概不用关心。

6.迪米特原则

public class Teacher{
    public void command(GroupLeader groupLeader){
        List<Girl> listGirl=new ArrayList<Girl>();
        for(int i=0;i<10;i++){
            listGirl.add(new Girl());
        }
        groupLeader.countGirls(listGirl);
    }
}

这个方法里居然依赖了Girl类?这绝对是不允许的!!!
应该修改如下:

public class Teacher{
    public void command(GroupLeader groupLeader){
        groupLeader.countGirls();
    }
}
public class GroupLeader{
    private List<Girl> listGirl;
    public GroupLeader(List<Girl> _listGirl){
        this.listGirl=_listGirl;
    }
    public void countGirls(){
        System.out.println(listGirl.size());
    }
}
上一篇下一篇

猜你喜欢

热点阅读