1.2单一职责原则

单一职责(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();
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容