Takrifan utama prinsip Tanggungjawab Tunggal mengatakan bahawa Kelas sepatutnya hanya mempunyai satu sebab untuk berubah. Mari pecahkan kenyataan ini untuk pemahaman yang lebih baik.
Andaikan kita mempunyai kelas yang memanipulasi teks yang kita berikan kepadanya, prinsip tanggungjawab tunggal menyatakan bahawa kelas yang kita cipta seharusnya hanya bertanggungjawab untuk memanipulasi teks dan apa-apa tindakan lain yang dilakukannya tidak seharusnya menjadi sebahagian daripada kelas.
Mari kita ambil contoh kelas sedemikian dan lihat bagaimana kita boleh memfaktorkannya semula :
class TextManipulator { text: string; constructor(text: string) { this.text = text; } appendText(newText: string) { return this.text.concat(newText); } findAndReplace(word: string, replacementWord: string) { if (this.text.includes(word)) { this.text.replace(word, replacementWord); } return this.text; } printText() { console.log("The text is ", this.text); } }
Dalam kod di atas seseorang dapat melihat bahawa kelas juga melakukan tindakan cetakan. Ini melanggar prinsip Tanggungjawab Tunggal. Kita boleh memfaktorkan semula kod dengan mencipta dua kelas baharu
class TextManipulator { private text: string; constructor(text: string) { this.text = text; } appendText(newText: string) { return this.text.concat(newText); } findAndReplace(word: string, replacementWord: string) { if (this.text.includes(word)) { this.text.replace(word, replacementWord); } return this.text; } getText() { return this.text; } } class PrintText { formattedText: TextManipulator; constructor(formattedText: TextManipulator) { this.formattedText = formattedText; } printText() { console.log("The text is ", this.formattedText.getText()); } }
Dalam kod refactored kami mempunyai dua kelas berasingan yang melakukan tindakan berasingan.
Dengan adanya Prinsip Tanggungjawab Tunggal kita boleh mencapai perkara berikut :-
Helah untuk melaksanakan prinsip tanggungjawab tunggal ialah mengetahui apakah tanggungjawab tunggal kelas kita. Walau bagaimanapun, setiap pembangun mempunyai visi mereka untuk tanggungjawab kelas, dan memandangkan kami tidak mempunyai sebarang arahan tentang cara untuk melaksanakan, kami hanya tinggal dengan tafsiran kami sendiri.
Mungkin terdapat contoh apabila kami memisahkan dua kelas yang sebenarnya melakukan perkara yang sama dengan perspektif perniagaan atau seni bina. Ini boleh mencipta kod yang lebih rumit dengan kedua-dua kelas digandingkan rapat antara satu sama lain, dan dengan itu mengurangkan tujuan tunggal prinsip SOLID
Kuncinya ialah jangan terlalu berfikir semasa membuat kelas baharu
Atas ialah kandungan terperinci Memahami Prinsip Tanggungjawab Tunggal dalam TypeScript: Panduan Ringkas. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!