Rumah > pembangunan bahagian belakang > C++ > Prinsip 'Beritahu, Jangan Tanya' Diterangkan dalam Beberapa Saat

Prinsip 'Beritahu, Jangan Tanya' Diterangkan dalam Beberapa Saat

Linda Hamilton
Lepaskan: 2025-01-19 10:03:10
asal
474 orang telah melayarinya

Prinsip Tell, Don't Ask, asas pengaturcaraan berorientasikan objek (OOP), menyokong untuk mereka bentuk objek yang merangkum kedua-dua data mereka dan kaedah yang memanipulasi data tersebut. Pendekatan ini memupuk sistem yang lebih boleh diselenggara dan teguh dengan mempertingkatkan enkapsulasi.


? Memahami "Beritahu, Jangan Tanya"

Prinsip "Beritahu, Jangan Tanya" menekankan mengarahkan objek tentang perkara yang perlu dilakukan, dan bukannya mendapatkan semula data mereka dan memprosesnya secara luaran. Ia menggalakkan mengekalkan logik dan keadaan dalam objek itu sendiri.

Daripada mengakses data objek untuk membuat keputusan luaran, anda secara langsung mengarahkan objek untuk melakukan tindakan dalaman. Strategi ini memudahkan kod, meminimumkan kebergantungan dan meningkatkan kebolehlanjutan dan kebolehselenggaraan sistem.


?? Contoh: Pemantauan Nilai Sensor

Mari kita periksa senario yang melibatkan nilai penderia dan penggera yang dicetuskan apabila nilai ini melebihi ambang.

Pendekatan "Tanya"

<code>class AskMonitor {
  private int value;
  private int limit;
  private String name;
  private Alarm alarm;

  public AskMonitor(String name, int limit, Alarm alarm) {
    this.name = name;
    this.limit = limit;
    this.alarm = alarm;
  }

  public int getValue() { return value; }
  public void setValue(int value) { this.value = value; }
  public int getLimit() { return limit; }
  public String getName() { return name; }
  public Alarm getAlarm() { return alarm; }
}</code>
Salin selepas log masuk

Penggunaan:

<code>AskMonitor monitor = new AskMonitor("Temperature Sensor", 100, alarm);
monitor.setValue(120);

if (monitor.getValue() > monitor.getLimit()) {
  monitor.getAlarm().warn(monitor.getName() + " is too high");
}</code>
Salin selepas log masuk

Pendekatan "Beritahu"

Dengan "Beritahu, Jangan Tanya," tingkah laku disepadukan ke dalam kelas Monitor.

<code>class TellMonitor {
  private int value;
  private int limit;
  private String name;
  private Alarm alarm;

  public TellMonitor(String name, int limit, Alarm alarm) {
    this.name = name;
    this.limit = limit;
    this.alarm = alarm;
  }

  public void setValue(int value) {
    this.value = value;
    if (this.value > this.limit) {
      alarm.warn(name + " is too high");
    }
  }
}</code>
Salin selepas log masuk

Penggunaan:

<code>TellMonitor monitor = new TellMonitor("Temperature Sensor", 100, alarm);
monitor.setValue(120);</code>
Salin selepas log masuk

Versi "Tell" menghapuskan pembuatan keputusan luaran dengan merangkum logik dalam kaedah setValue.


⭐ Kelebihan "Beritahu, Jangan Tanya"

Ekapsulasi yang lebih kuat: Data dan gelagat digandingkan dengan ketat.
Kod Ringkas: Logik luaran diminimumkan dengan menginternalisasi tingkah laku.
Kebolehselenggaraan yang Dipertingkat: Lebih mudah untuk mengubah suai dan melanjutkan fungsi.


? Bila hendak "Beritahu"

Tingkah Laku Berkapsul: Apabila objek sememangnya mengetahui cara memproses datanya.

Contoh: Objek Monitor, menyedari hadnya, harus secara autonomi mencetuskan penggera apabila melebihi had tersebut.

Tindakan Dicetuskan Negeri: Apabila perubahan keadaan memerlukan tindakan seterusnya (cth., pemberitahuan, pengelogan).

Contoh: Objek UserProfile mengemas kini log aktiviti secara automatik semasa pengubahsuaian profil.


? Bila hendak "Tanya"

Pendapatan Data: Apabila data diperlukan tanpa mengubah keadaan objek.

Contoh: Mendapatkan semula User alamat e-mel objek.

Membuat Keputusan Luaran: Apabila keputusan bergantung pada faktor luaran.

Contoh: Mendapatkan nama Person untuk secara luaran menentukan sapaan yang sesuai.

Perwakilan Tanggungjawab: Apabila objek bekerjasama dan seseorang memerlukan data daripada yang lain untuk membuat keputusan.

Contoh: A Router menanyakan beban Server untuk pengurusan trafik.


? Sumber Berkaitan

Berminat? ? Terokai siaran lain dalam siri prinsip pengaturcaraan saya!

  • Prinsip Rekaan KISS Diterangkan dalam 100 Saat
  • Prinsip KERING Diterangkan dalam 100 Saat

Kekal dikemas kini pada siaran akan datang:

  • Linkedin
  • Github
  • Twitter/ X

Atas ialah kandungan terperinci Prinsip 'Beritahu, Jangan Tanya' Diterangkan dalam Beberapa Saat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan