Rumah hujung hadapan web tutorial js Prinsip PADAT menggunakan beberapa analogi yang menyeronokkan dengan Contoh Kenderaan

Prinsip PADAT menggunakan beberapa analogi yang menyeronokkan dengan Contoh Kenderaan

Aug 22, 2024 pm 06:33 PM

SOLID principles using some fun analogies with Vehicle Example

SOLID ialah akronim untuk sekumpulan lima prinsip (peraturan) yang baik dalam pengaturcaraan komputer. SOLID membolehkan pengaturcara menulis kod yang lebih mudah difahami dan diubah kemudian hari. SOLID selalunya digunakan dengan sistem yang menggunakan reka bentuk berorientasikan objek.
Mari kita terangkan prinsip SOLID menggunakan contoh kenderaan. Bayangkan kami sedang mereka bentuk sistem untuk mengurus pelbagai jenis kenderaan, seperti kereta dan kereta elektrik, untuk perkhidmatan pengangkutan.

S - Prinsip Tanggungjawab Tunggal (SRP)

Contoh Kenderaan: Bayangkan anda mempunyai kereta. Ia bertanggungjawab untuk memandu, tetapi ia tidak sepatutnya bertanggungjawab untuk mengendalikan penyelenggaraannya sendiri (seperti penukaran minyak atau putaran tayar). Sebaliknya, mekanik berasingan bertanggungjawab untuk itu.
Penjelasan: Dalam kod kami, kelas Kenderaan hanya perlu mengendalikan perkara yang berkaitan dengan kenderaan itu sendiri, seperti menyimpan buatan dan modelnya. Jika kami perlu menguruskan penyelenggaraan, kami membuat kelas Penyelenggaraan yang berasingan untuk itu. Dengan cara ini, setiap kelas mempunyai satu tugas atau tanggungjawab, menjadikan kod lebih mudah untuk diurus.

class Vehicle
  def initialize(make, model)
    @make = make
    @model = model
  end
end

class Maintenance
  def initialize(vehicle)
    @vehicle = vehicle
  end

  def perform_maintenance
    puts "Performing maintenance on #{@vehicle.make} #{@vehicle.model}"
  end
end
Salin selepas log masuk

O - Prinsip Terbuka/Tertutup (OCP)

Contoh Kenderaan: Katakan anda mempunyai kereta asas, dan kini anda ingin menambah kereta elektrik pada sistem anda. Anda tidak perlu mengubah suai kelas kereta sedia ada untuk menambah ciri bagi kereta elektrik. Sebaliknya, anda boleh melanjutkan fungsi sedia ada dengan mencipta kelas baharu untuk kereta elektrik.
Penjelasan: Kelas Kenderaan dibuka untuk sambungan (anda boleh mencipta jenis kenderaan baharu seperti ElectricVehicle), tetapi ditutup untuk pengubahsuaian (anda tidak perlu menukar kelas Kenderaan itu sendiri untuk menambah jenis baharu).

class Vehicle
  def initialize(make, model)
    @make = make
    @model = model
  end

  def description
    "#{@make} #{@model}"
  end
end

class ElectricVehicle < Vehicle
  def initialize(make, model, battery_range)
    super(make, model)
    @battery_range = battery_range
  end

  def description
    "#{super} with #{@battery_range} miles battery range"
  end
end
Salin selepas log masuk

L - Prinsip Penggantian Liskov (LSP)

Contoh Kenderaan: Bayangkan anda mempunyai kumpulan kenderaan, dan anda boleh menggantikan mana-mana kereta biasa dengan kereta elektrik tanpa sebarang masalah. Kedua-duanya sepatutnya dapat melaksanakan fungsi asas mereka - memandu - tanpa melanggar sistem.
Penjelasan: Mana-mana subkelas (seperti ElectricVehicle) sepatutnya boleh menggantikan kelas induknya (Kenderaan) tanpa mengubah tingkah laku program. Ini memastikan kod kami boleh mengendalikan pelbagai jenis kenderaan dengan cara yang sama.

class Vehicle
  def initialize(make, model)
    @make = make
    @model = model
  end

  def drive
    puts "Driving the #{@make} #{@model}"
  end
end

class ElectricVehicle < Vehicle
  def drive
    puts "Driving the electric #{@make} #{@model} quietly"
  end
end

def test_drive(vehicle)
  vehicle.drive
end

car = Vehicle.new("Toyota", "Corolla")
ev = ElectricVehicle.new("Tesla", "Model 3")

test_drive(car)  # Driving the Toyota Corolla
test_drive(ev)   # Driving the electric Tesla Model 3 quietly
Salin selepas log masuk

I - Prinsip Pengasingan Antara Muka (ISP)

Contoh Kenderaan: Bayangkan anda mempunyai pelbagai jenis kenderaan: ada yang boleh dicas (seperti kereta elektrik), dan ada yang hanya boleh dipandu (seperti kereta gas). Anda tidak mahu kereta gas perlu berurusan dengan kaedah yang berkaitan dengan pengecasan.
Penjelasan: Kelas hendaklah hanya melaksanakan antara muka (atau gelagat) yang mereka perlukan. Sebagai contoh, Kenderaan Elektrik mungkin melaksanakan kedua-dua antara muka Boleh Dipandu dan Boleh Dicaj, manakala Kenderaan biasa hanya melaksanakan Boleh Dipandu.

module Drivable
  def drive
    raise NotImplementedError, "This #{self.class} cannot drive"
  end
end

module Chargeable
  def charge
    raise NotImplementedError, "This #{self.class} cannot be charged"
  end
end

class Vehicle
  include Drivable

  def initialize(make, model)
    @make = make
    @model = model
  end

  def drive
    puts "Driving the #{@make} #{@model}"
  end
end

class ElectricVehicle < Vehicle
  include Chargeable

  def initialize(make, model, battery_range)
    super(make, model)
    @battery_range = battery_range
  end

  def drive
    puts "Driving the electric #{@make} #{@model} quietly"
  end

  def charge
    puts "Charging the #{@make} #{@model}"
  end
end
Salin selepas log masuk

D - Prinsip Penyongsangan Kebergantungan (DIP)

Contoh Kenderaan: Bayangkan sebuah kereta boleh mempunyai pelbagai jenis enjin: enjin gas atau enjin elektrik. Daripada bergantung secara langsung pada jenis enjin tertentu, kereta harus bergantung pada antara muka Enjin yang lebih umum supaya ia boleh menggunakan sebarang jenis enjin.
Penjelasan: Modul peringkat tinggi (seperti Kenderaan) tidak boleh bergantung pada modul peringkat rendah (seperti GasEngine atau ElectricEngine). Kedua-duanya harus bergantung pada abstraksi (seperti antara muka Enjin). Ini menjadikan sistem lebih fleksibel dan lebih mudah diubah.

class Engine
  def start
    raise NotImplementedError, "This #{self.class} cannot start"
  end
end

class GasEngine < Engine
  def start
    puts "Starting gas engine"
  end
end

class ElectricEngine < Engine
  def start
    puts "Starting electric engine"
  end
end

class Vehicle
  def initialize(engine)
    @engine = engine
  end

  def start
    @engine.start
  end
end

gas_engine = GasEngine.new
electric_engine = ElectricEngine.new

gas_car = Vehicle.new(gas_engine)
electric_car = Vehicle.new(electric_engine)

gas_car.start        # Starting gas engine
electric_car.start   # Starting electric engine

Salin selepas log masuk

Dengan mengikut prinsip SOLID dalam contoh kenderaan ini, kami boleh membina sistem yang mudah diselenggara, dilanjutkan dan disesuaikan dengan keperluan baharu.

LinkedIn: https://www.linkedin.com/in/anandsoni11/

Atas ialah kandungan terperinci Prinsip PADAT menggunakan beberapa analogi yang menyeronokkan dengan Contoh Kenderaan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Tag artikel panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Ganti aksara rentetan dalam javascript Ganti aksara rentetan dalam javascript Mar 11, 2025 am 12:07 AM

Ganti aksara rentetan dalam javascript

Tutorial Persediaan API Carian Google Custom Tutorial Persediaan API Carian Google Custom Mar 04, 2025 am 01:06 AM

Tutorial Persediaan API Carian Google Custom

Contoh warna json fail Contoh warna json fail Mar 03, 2025 am 12:35 AM

Contoh warna json fail

8 plugin susun atur halaman jquery yang menakjubkan 8 plugin susun atur halaman jquery yang menakjubkan Mar 06, 2025 am 12:48 AM

8 plugin susun atur halaman jquery yang menakjubkan

10 JQuery Syntax Highlighters 10 JQuery Syntax Highlighters Mar 02, 2025 am 12:32 AM

10 JQuery Syntax Highlighters

Apa itu ' ini ' Dalam JavaScript? Apa itu ' ini ' Dalam JavaScript? Mar 04, 2025 am 01:15 AM

Apa itu ' ini ' Dalam JavaScript?

Bina Aplikasi Web Ajax anda sendiri Bina Aplikasi Web Ajax anda sendiri Mar 09, 2025 am 12:11 AM

Bina Aplikasi Web Ajax anda sendiri

10 JavaScript & JQuery MVC Tutorial 10 JavaScript & JQuery MVC Tutorial Mar 02, 2025 am 01:16 AM

10 JavaScript & JQuery MVC Tutorial

See all articles