设计模式原则——单一原则
设计模式一共有六大原则:
单一原则、开放封闭原则、接口分离原则、里氏替换原则、最少知识原则、依赖倒置原则。
这篇博客是自己对单一设计原则的一些拙见,有何不对欢迎大家指出。
单一原则:
就一个类而言,应该仅有一个引起它变化的原因。
如何理解这句话?
一个类中只负责一个职责。当我们觉得这个“职责”不符合我们的要求的时候,我们可以随时只替换这个职责。因为类中只有这一个职责,所以并不会影响到其他的职责。
假如,一个类中有两个职责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(); } }
总结:
从代码中可以看出,采用了单一原则的代码,当播放音乐或者拍摄照片的需求改变的时,两者之间的变化是互不影响。