设计模式原则——单一原则

设计模式一共有六大原则:

单一原则、开放封闭原则、接口分离原则、里氏替换原则、最少知识原则、依赖倒置原则。

这篇博客是自己对单一设计原则的一些拙见,有何不对欢迎大家指出。

单一原则:

就一个类而言,应该仅有一个引起它变化的原因。

如何理解这句话?

一个类中只负责一个职责。当我们觉得这个“职责”不符合我们的要求的时候,我们可以随时只替换这个职责。因为类中只有这一个职责,所以并不会影响到其他的职责。

假如,一个类中有两个职责A和B,当A不满足需求需要被修改的时候,B同样的也会受到影响。(这种影响是不可预期)

Demo:(手机为例)

手机含有的拍照功能:

public interface MakePhoto {
    // 拍照功能
    public void photo();
}

手机含有的mp3功能:

public interface ListenMusic {
    // 听音乐
    public void play();
}

不遵循单一原则的实现:

/**
 * 实现方式没有遵循单一原则,拍照或者播放音乐需求的改变都会引起整天的变化。
 * 
 * @author tujietg
 *
 */
public class Iphone implements ListenMusic, MakePhoto {

    @Override
    public void photo() {
        System.out.println("手机含有拍照功能");
    }

    @Override
    public void play() {
        System.out.println("手机含有播放功能");
    }

}

遵循单一规则的实现:

拍照功能:

public class PhotoImpl implements MakePhoto {
    @Override
    public void photo() {
        System.out.println("仅仅拍照功能的实现");
    }
}

播放功能:

public class ListenMusicImpl implements ListenMusic {

    @Override
    public void play() {
        System.out.println("播放功能的实现");
    }

}

手机的实现:

public class iphoneModel {
    public static void main(String[] args) {
        // 播放音乐
        ListenMusic listenMusic = new ListenMusicImpl();
        // 拍摄照片
        MakePhoto makePhoto = new PhotoImpl();
        listenMusic.play();
        makePhoto.photo();
    }
}

总结:

从代码中可以看出,采用了单一原则的代码,当播放音乐或者拍摄照片的需求改变的时,两者之间的变化是互不影响。

原文地址:https://www.cnblogs.com/tujietg/p/10220075.html