Solid principles là gì

      13

Phần mượt được xem là giỏi khi khi nó gồm kiến trúc giỏi. Kiến trúc ứng dụng tựa như nlỗi móng bên, móng yếu ớt công ty sẽ không vững. Để viết được ứng dụng giỏi các bạn buộc phải học tập rất nhiều, điều thứ nhất bạn cần biết là SOLID.

Bạn đang xem: Solid principles là gì

SOLID ra đời như thế nào?

Lập trình phía đối tượng người dùng (object oriented programming – OOP) là một Một trong những mô hình lập trình sẵn được áp dụng các tuyệt nhất. Các đặc thù quan trọng khiến cho vấn đề phía đối tượng người sử dụng trsinh sống cần hiệu quả kia là:

Tính trừu tượng (abstraction): Tạo ra các lớp trừu tượng quy mô hoá những đối tượng người tiêu dùng trong trái đất thực.Tính đóng góp gói (Encapsulation): Các thực thể của lớp trừu tượng có những giá trị ở trong tính riêng lẻ.Tính kế thừa (Inheritance): Các đối tượng người dùng rất có thể thuận tiện kế thừa với không ngừng mở rộng lẫn nhau.Tính đa hình (Polymorphism): cũng có thể thực hiện một hành vi đối kháng theo khá nhiều cách thức không giống nhau tuỳ theo một số loại đối tượng người sử dụng ví dụ đang rất được gọi.

Các tính chất quan trọng này của OOP. giúp họ xây đắp được những công tác giải quyết và xử lý được nhiều sự việc ví dụ khác nhau trong nhân loại thực. Hầu không còn lập trình viên hầu như vẫn biết các đặc thù này của OOP., cơ mà cách thức nhằm phối kết hợp những đặc điểm này cùng nhau nhằm tăng công dụng của vận dụng thì chưa phải ai ai cũng nắm được. giữa những hướng dẫn sẽ giúp họ thực hiện được OOP tác dụng hơn chính là hình thức SOLID.


*
*
*
Minc hoạ một trường hợp vi phạm hiệ tượng Liskov substitution. Nếu thi công lớp như vậy này, thì lớp CleanerStaff đang dùng được hàm checkAttendance(), nhưng mà điều này là không đúng, cần phía trên sẽ là một mẫu mã xây cất không nên vẻ ngoài.

Quay trở về ví dụ lớp Emloyee trong phần 1, ta trả sử gồm cửa hàng sẽ điểm danh vào mỗi buổi sáng, và chỉ có những nhân viên thuộc biên chế chấp nhận new được phxay điểm danh. Ta bổ sung cách làm checkAttendance() vào lớp Employee.

Hình dung có một trường hòa hợp sau: chủ thể mướn một nhân viên cấp dưới lao công để triển khai lau chùi và vệ sinh văn phòng, mang mặc dù là một fan làm việc cho quý doanh nghiệp dẫu vậy vì chưng ko được cấp cho số ID phải không được coi là một nhân viên thông thường, nhưng chỉ là một trong nhân viên cấp dưới thời vụ, cho nên vì vậy sẽ không còn lấy điểm danh.

Ngulặng tắc này nói rằng: Nếu chúng ta tạo thành một lớp CleanerStaff thừa kế từ bỏ lớp Employee, với implement hàm working() cho lớp này, thì gần như sản phẩm công nghệ phần đa ổn định, mặc dù lớp mới này cũng lại có hàm checkAttendance() để điểm danh, cơ mà như vậy là không nên vẻ ngoài dẫn đến công tác bị lỗi. Bởi vậy, thi công lớp CleanerStaff thừa kế từ lớp Employee là ko được phxay.

Xem thêm: Áo Dài Là Gì - Lịch Sử Và Quá Trình Phát Triển Áo Dài Việt Nam

Có nhiều phương pháp để giải quyết và xử lý tình huống này ví như tách hàm checkAttendance() ra một interface riêng rẽ và chỉ cho các lớp Developer, Tester và Salesman implements interface này.

Interface segregation principle

Nội dung:

Ttuyệt vày cần sử dụng 1 interface béo, ta đề xuất bóc tách thành nhiều interface nhỏ tuổi, với nhiều mục đích ví dụ.Nguim lý này rất dễ hình dung. Hãy tưởng tượng bọn họ có 1 interface mập, khoảng chừng 100 methods. Việc implements sẽ khá vất vả vì chưng các class impliment interface này đã bắt buộc phải bắt buộc xúc tiến cục bộ những method của interface. Ngoài ra còn hoàn toàn có thể dư thừa do 1 class không buộc phải cần sử dụng hết 100 method. Lúc bóc tách interface ra thành các interface bé dại, có những method liên quan cho tới nhau, câu hỏi implement cùng thống trị vẫn dễ hơn.

Ví dụ:

Chúng ta có một interface Animal nhỏng sau:

interface Animal void eat(); void run(); void fly();

Chúng ta tất cả 2 class Dog và Snake implement interface Animal. Nhưng thật vô lý, Dog thì làm thế nào bao gồm thể fly(), cũng như Snake thiết yếu nào run() được? Ttốt vào đó, bọn họ nên tách thành 3 interface như thế này:

interface Animal void eat();interface RunnableAnimal extends Animal void run();interface FlyableAnimal extends Animal void fly();

Dependency inversion principle

Nội dung:

1.Các module V.I.P tránh việc nhờ vào vào những modules cấp thấp. Cả 2 yêu cầu phụ thuộc vào vào abstraction.2.Interface (abstraction) không nên phụ thuộc vào cụ thể, mà hoàn toàn ngược lại (Các class tiếp xúc với nhau thông qua interface (abstraction), không hẳn thông qua implementation.)cũng có thể gọi ngulặng lí nàgiống hệt như sau: đầy đủ nguyên tố trong 1 lịch trình nên làm phụ thuộc vào vào các cái trừu tượng (abstraction). Những thành phần trừu tượng không nên nhờ vào vào các thành phần mang ý nghĩa cụ thể nhưng mà nên ngược chở lại.

Những cái trừu tượng (abstraction) là các chiếc không nhiều đổi khác cùng dịch chuyển, nó tập hòa hợp những đặc tính thông thường nhất của những mẫu rõ ràng. Những chiếc rõ ràng dù không giống nhau thay làm sao đi nữa hồ hết tuân thủ theo đúng những nguyên tắc phổ biến nhưng mà mẫu trừu tượng đang định ra. Việc phụ thuộc vào mẫu trừu tượng để giúp lịch trình năng động và thích hợp ứng tốt cùng với các sự biến hóa diễn ra thường xuyên.

Ví dụ:

Lấy ví dụ về ổ cứng của sản phẩm tính, bạn có thể sử dụng các loại ổ cứng thể rắn SSD đời mới để chạy cho nkhô nóng, tuy nhiên cũng có thể sử dụng ổ đĩa con quay HDD thông thường. Nhà cung ứng Mainboard chẳng thể nào biết bạn sẽ dùng ổ SSD hay loại HDD đĩa cù thông thường. Tuy nhiên họ đã luôn luôn bảo đảm an toàn rằng bạn cũng có thể cần sử dụng bất cứ thứ gì bạn muốn, miễn là ổ đĩa cứng kia yêu cầu tất cả chuẩn tiếp xúc SATA nhằm rất có thể gắn được vào bo mạch nhà. Ở trên đây chuẩn giao tiếp SATA chính là interface, còn SSD giỏi HDD đĩa con quay là implementation ví dụ.

Trong lúc xây dựng cũng vậy, Lúc áp dụng nguyên lý này, sinh hoạt phần đa lớp trừu tượng V.I.P, ta thường sử dụng interface nhiều hơn cầm cố bởi một mẫu mã kế thừa cụ thể. lấy một ví dụ, nhằm kết nối cho tới Database, ta thường thiết kế lớp trừu tượng DataAccess gồm các cách tiến hành cách làm bình thường nlỗi save(), get(), … Sau đó tùy thuộc vào Việc áp dụng một số loại DBMS làm sao (vd: MySql, MongoDB, …) mà ta kế thừa với implement số đông phương thức này. Tính chất nhiều hình của OOP được vận dụng tương đối nhiều vào nguyên tắc này.

Tổng kết

SOLID là 5 hình thức cơ phiên bản trong vấn đề thiết kế phần mềm. Nó giúp chúng ta tổ chức triển khai sắp xếp các function, method, class một biện pháp chính xác rộng. Làm sao nhằm liên kết các yếu tố, module cùng nhau.

Rõ ràng, dễ dàng hiểu

Teamwork là điều tất yêu tách vào thiết kế. Áp dụng SOLID vào công việc các bạn sẽ tạo nên những hàm tốt, dễ nắm bắt hơn. Giúp cho mình với người cùng cơ quan hiểu phát âm code của nhau xuất sắc rộng.

Dễ rứa đổi

SOLID góp tạo ra các module, class cụ thể, mạch lạc, mang ý nghĩa tự do cao. Do vậy khi gồm sự hưởng thụ thay đổi, mở rộng từ bỏ quý khách, ta cũng ko tốn rất nhiều công sức của con người để triển khai câu hỏi biến hóa.

Tái sử dụng

SOLID khiến cho các lập trình sẵn viên cân nhắc nhiều hơn nữa về phong thái viết ứng dụng, vì thế code viết ra sẽ mạch lạc, dễ dàng nắm bắt, dễ dàng thực hiện.