Prinsip Tanggungjawab Tunggal, dirujuk sebagai SRP.
Definisi:
Jangan sekali-kali ada lebih daripada satu sebab untuk kelas berubah.
Perlu ada dan hanya satu sebab untuk kelas berubah.
Kadangkala, pembangun menghadapi beberapa masalah semasa mereka bentuk antara muka Contohnya, atribut pengguna dan gelagat pengguna diisytiharkan dalam antara muka. Ini menyebabkan objek perniagaan dan logik perniagaan disatukan, yang mengakibatkan antara muka mempunyai dua tanggungjawab Tanggungjawab antara muka tidak jelas Menurut definisi SRP, ia melanggar prinsip tanggungjawab tunggal antara muka.
Berikut ialah contoh:
package com.loulijun.chapter1; public interface Itutu { //身高 void setShengao(double height); double getShengao(); //体重 void setTizhong(double weight); double getTizhong(); //吃饭 boolean chiFan(boolean hungry); //上网 boolean shangWang(boolean silly); }
Contoh di atas mempunyai masalah ini Ketinggian dan berat adalah objek perniagaan, dan kaedah yang sepadan bertanggungjawab terutamanya untuk atribut pengguna. Makan dan melayari Internet adalah logik perniagaan yang sepadan, yang bertanggungjawab terutamanya untuk tingkah laku pengguna. Tetapi ini akan memberi orang perasaan tidak tahu apa yang dilakukan antara muka ini, dan tanggungjawabnya tidak jelas, yang juga akan menyebabkan pelbagai masalah semasa penyelenggaraan kemudian.
Penyelesaian: Prinsip tanggungjawab tunggal, hanya uraikan antara muka ini kepada dua antara muka dengan tanggungjawab yang berbeza
ItutuBO.java: Bertanggungjawab untuk atribut tutu (Tutu, jika ia adalah nama peribadi)
package com.loulijun.chapter1; /** * BO:Bussiness Object,业务对象 * 负责用户的属性 * @author Administrator * */ public interface ItutuBO { //身高 void setShengao(double height); double getShengao(); //体重 void setTizhong(double weight); double getTizhong(); }
ItutuBL.java: Bertanggungjawab terhadap tingkah laku Tutu
package com.loulijun.chapter1; /** * BL:Business Logic,业务逻辑 * 负责用户的行为 * @author Administrator * */ public interface ItutuBL { //吃饭 boolean chiFan(boolean hungry); //上网 boolean shangWang(boolean silly); }
Ini mencapai tanggungjawab tunggal antara muka. Kemudian apabila melaksanakan antara muka, anda perlu mempunyai dua kelas yang berbeza
TutuBO.java
package com.loulijun.chapter1; public class TutuBO implements ItutuBO { private double height; private double weight; @Override public double getShengao() { return height; } @Override public double getTizhong() { return weight; } @Override public void setShengao(double height) { this.height = height; } @Override public void setTizhong(double weight) { this.weight = weight; } }
TutuBL.java
package com.loulijun.chapter1; public class TutuBL implements ItutuBL { @Override public boolean chiFan(boolean hungry) { if(hungry) { System.out.println("去吃火锅..."); return true; } return false; } @Override public boolean shangWang(boolean silly) { if(silly) { System.out.println("好无聊啊,上会网..."); return true; } return false; } }
Ini jelas apabila anda perlukan untuk mengubah suai atribut pengguna, anda hanya perlu mengubah suai antara muka ItutuBO Ia hanya akan menjejaskan kelas TutuBO dan bukan kelas lain.
Jadi apakah kepentingan prinsip tanggungjawab tunggal?
Kurangkan kerumitan kelas dan tentukan tanggungjawab dengan jelas
Tingkatkan kebolehbacaan
Tingkatkan kebolehselenggaraan
Kurangkan risiko yang disebabkan oleh perubahan, yang sangat membantu untuk kebolehskalaan dan kebolehselenggaraan sistem
Walau bagaimanapun, terdapat masalah dengan menggunakan prinsip tanggungjawab tunggal. Tidak ada piawaian yang jelas untuk membahagikan "tanggungjawab". Oleh itu, apabila menggunakan tanggungjawab ini, keadaan tertentu mesti dianalisis. Cadangannya ialah antara muka mesti mengguna pakai prinsip tanggungjawab tunggal dan melaksanakan prinsip tanggungjawab tunggal sebanyak mungkin dalam reka bentuk kelas Satu-satunya sebab ialah kelas berubah.
Atas ialah kandungan terperinci Bagaimana untuk melaksanakan prinsip tanggungjawab tunggal corak reka bentuk java. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!