设计模式六大原则——单一职责原则(SRP)

简介: <h1><span style="font-size:18px">      定义</span></h1> <p><span style="font-size:18px">      就一个类而言,应该仅有一个引起它变化的原因。通俗的说,一个类只负责一项职责。</span></p> <p><span style="font-size:18px"><br></span></p> <h1

      定义

      就一个类而言,应该仅有一个引起它变化的原因。通俗的说,一个类只负责一项职责。


      问题的由来

      手机的功能多,但是每一项的功能都不强:

      拍摄功能——>专业的摄像机和照相机

      手机游戏——>PSP

      网络摄像头——>专业摄像头

      GPS功能——>专业GPS导航系统

      每一个职责都是一个变化的轴线,当需求变化时会反映为类的职责的变化,如果一个类的承担的职责多于一个,那么引起她变化的原因就有多个,一个职责的变化可能会削弱或者抑制这个类完成其他职责的能力,从而导致脆弱的设计。 

      

      解决方案

      遵循单一职责原则。分别建立两个类T1、T2,使T1完成职责P1功能,T2完成职责P2功能。这样,当修改类T1时,不会使职责P2发生故障风险;同理,当修改T2时,也不会使职责P1发生故障风险。

   

    示例

    

   

 public interface Program
    {
        void draw();     //绘制图形
        void area();     //计算面积
    }

    public class DrawGraph implements Program
    {
        public void draw()
        {
            System .Out.PrintIn("绘制图形");
        }
        public void area(){}
    }
    public class AreaCount implements Program
    {
        public void draw(){}
        public void area()
        {
            System .out.printIn("计算面积");
        }
    }

}

以上 图形计算程序只使用了正方形的Area()方法,永远不会使用Draw()方法,而它却跟Draw方法关联了起来。这违反了单一原则,如果未来因为图形绘制程序导致Draw()方法产生了变化,那么就会影响到本来毫不关系的图形计算程序。

应该把接口改成2个,将不同的职责分配给不同的类,使单个类的职责尽量单一,就隔离了变化,这样他们也不会互相影响了。

public interface Draw
    {
        void draw();     //绘制图形
    }

    public interface Area
    {
        void area();    //计算面积
    }

然后分别实现接口,如下:



      

相关文章
|
5月前
|
设计模式 Java 程序员
|
6月前
|
设计模式 Java 测试技术
Java设计模式七大原则-接口隔离原则
Java设计模式七大原则-接口隔离原则
36 0
|
1月前
|
设计模式 关系型数据库
设计模式的六大原则:理解设计模式的关键思想和应用
设计模式的六大原则:理解设计模式的关键思想和应用
18 2
|
1月前
|
设计模式
【设计模式】1、设计模式七大原则
【设计模式】1、设计模式七大原则
16 0
|
3月前
|
设计模式 存储 NoSQL
【设计模式】软件设计原则-单一职责原则
【1月更文挑战第12天】【设计模式】软件设计原则-单一职责原则
|
3月前
|
设计模式 关系型数据库
【设计模式】软件设置原则-开闭原则
【1月更文挑战第12天】【设计模式】软件设置原则-开闭原则
|
4月前
|
设计模式 Java
Java设计模式七大原则之依赖倒置原则
Java设计模式七大原则之依赖倒置原则
29 0
|
4月前
|
设计模式 Java 开发者
Java设计模式七大原则之里氏替换原则
Java设计模式七大原则之里氏替换原则
27 0
|
4月前
|
设计模式 安全 Java
Java设计模式七大原则之开闭原则
Java设计模式七大原则之开闭原则
34 0
|
5月前
|
设计模式 关系型数据库
设计模式原则(下)
设计模式原则(下)