📜  单一职责 - Java (1)

📅  最后修改于: 2023-12-03 15:37:02.761000             🧑  作者: Mango

单一职责原则

单一职责原则(Single Responsibility Principle, SRP)是面向对象设计原则的其中之一。它主要强调一个类只负责完成一个功能或者任务。

SRP的优点
  • 高内聚、低耦合:一个类只负责完成一个功能或者任务,避免了多个功能、任务的耦合,使得类的内聚性更高,同时也降低了类与类之间的耦合性。
  • 易于维护和测试:由于每个类仅仅承担一个职责,代码的耦合性更低,代码的复杂度也更低,因此更容易进行维护和测试。
  • 更容易扩展:由于职责单一,功能清晰,因此更容易进行扩展和更改,不会影响到其他功能。
SRP的实现
一个类只负责完成一个功能

程序员在编写代码时,需要注意将功能划分清晰,每个类只承担一个职责。例如,下面的代码:

public class FileReader {
    public void read(String file) {
        // 读取文件
    }
    public void write(String file, String content) {
        // 写入文件
    }
    public void close() {
        // 关闭文件
    }
}

上面的 FileReader 类承担了读取、写入和关闭文件的职责,违反了SRP原则。可以将其重构为:

public class FileReader {
   public void read(String file) {
       // 读取文件
   }
}

public class FileWriter {
    public void write(String file, String content) {
       // 写入文件
    }
}

public class FileCloser {
    public void close() {
        // 关闭文件
    }
}
接口单一职责

接口也应该遵循SRP原则,每个接口只负责完成一个功能或者任务。如果一个接口承担多个职责,那么就会造成代码的复杂度加大。例如,下面的代码:

public interface ReaderWriter {
    void read(String file);
    void write(String file, String content);
    void close();
}

上面的 ReaderWriter 接口承担了读取、写入和关闭文件的职责,违反了SRP原则。可以将其重构为:

public interface Reader {
   void read(String file);
}

public interface Writer {
    void write(String file, String content);
}

public interface Closer {
    void close();
}
总结

单一职责原则是面向对象设计中非常重要的一个原则,它可以提高代码的内聚性,降低代码的耦合性,便于维护和拓展。程序员在编写代码时,应该注意将类中的职责划分清晰,保证每个类只承担一个职责。同时,接口也应该遵循SRP原则,保证每个接口只负责完成一个职责。