单一职责(Simple Responsibility Principle , SRP)是指不要存在多于一个导致类变更的原因。
假设我 有一个类负责两个职责, 旦发生需求变更,修改其中一个职责的逻辑代码,有可能导
致另一个职责的功能发生故障。这样一来,这个类就存在两个导致类变更的原因。
1.打电话接口
public interface Call {
void call();
}
2.短信提醒接口
public interface MessagePrompt {
void prompt();
}
4.苹果手机
public class IPhone implements Call, MessagePrompt{
private Call call = new StandardCall();
private MessagePrompt messagePrompt = new StandardMessagePrompt();
@Override
public void call() {
call.call();
}
@Override
public void prompt() {
messagePrompt.prompt();
}
}
3.标准呼叫
public class StandardCall implements Call{
@Override
public void call() {
System.out.println("标准呼叫某人");
}
}
4.标准消息
public class StandardMessagePrompt implements MessagePrompt{
@Override
public void prompt() {
System.out.println("标准消息提醒某人");
}
}
5.苹果手机
public class IPhone implements Call, MessagePrompt{
private Call call = new StandardCall();
private MessagePrompt messagePrompt = new StandardMessagePrompt();
@Override
public void call() {
call.call();
}
@Override
public void prompt() {
messagePrompt.prompt();
}
}
6.调用
public static void main(String [] args){
IPhone phone = new IPhone();
phone.call();
phone.prompt();
}
以上就是一个类 接口或方法只负责一项职责的单一职责原则。实际的情况下我们更可能出现下面的情况,如何取舍取决于我们自己。
7.呼叫和提醒一体
public class CallAndPrompt implements Call, MessagePrompt{
@Override
public void call() {
System.out.println("高级呼叫");
}
@Override
public void prompt() {
System.out.println("高级提醒");
}
}
8.苹果11手机
public class IPhone2 implements Call, MessagePrompt{
private Call call = new CallAndPrompt();
private MessagePrompt prompt = (MessagePrompt)call;
@Override
public void call() {
call.call();
}
@Override
public void prompt() {
prompt.prompt();
}
}
9.调用
public class PhoneTest2 {
public static void main(String [] args){
IPhone2 phone = new IPhone2();
phone.call();
phone.prompt();
}
}