• About
  • Advertise
  • Privacy & Policy
  • Contact
DevZone
  • Home
  • News
  • Dev
    • All
    • Algorithm
    • Architecture
    • Database
    • Design
    • DevOps
    • IoT
    • Network
    • Test
    • Web
    Phương thức xử lý mảng trong javascript

    Phương thức xử lý mảng trong javascript

    Bảo vệ content, chống copy nội dung web!

    Bảo vệ content, chống copy nội dung web!

    Lưu ý mệnh đề NOT IN trong SQL

    Lưu ý mệnh đề NOT IN trong SQL

    SOLID Principles: Dependency Inversion Principle

    SOLID Principles: Dependency Inversion Principle

    Solid Principles: Interface Segregation Principle

    Solid Principles: Interface Segregation Principle

    Tìm hiểu về composer.json schema (phần 2 – autoload)

    Tìm hiểu về composer.json schema (phần 2 – autoload)

    IPC – Đằng sau sự thành công của Chromium

    IPC – Đằng sau sự thành công của Chromium

    Dựng layout website với CSS Grid Layout

    Dựng layout website với CSS Grid Layout

    Golang cơ bản (p1)

    Golang cơ bản (p1)

    Trending Tags

    • Idea
    • Lifestyle
    No Result
    View All Result
    • Home
    • News
    • Dev
      • All
      • Algorithm
      • Architecture
      • Database
      • Design
      • DevOps
      • IoT
      • Network
      • Test
      • Web
      Phương thức xử lý mảng trong javascript

      Phương thức xử lý mảng trong javascript

      Bảo vệ content, chống copy nội dung web!

      Bảo vệ content, chống copy nội dung web!

      Lưu ý mệnh đề NOT IN trong SQL

      Lưu ý mệnh đề NOT IN trong SQL

      SOLID Principles: Dependency Inversion Principle

      SOLID Principles: Dependency Inversion Principle

      Solid Principles: Interface Segregation Principle

      Solid Principles: Interface Segregation Principle

      Tìm hiểu về composer.json schema (phần 2 – autoload)

      Tìm hiểu về composer.json schema (phần 2 – autoload)

      IPC – Đằng sau sự thành công của Chromium

      IPC – Đằng sau sự thành công của Chromium

      Dựng layout website với CSS Grid Layout

      Dựng layout website với CSS Grid Layout

      Golang cơ bản (p1)

      Golang cơ bản (p1)

      Trending Tags

      • Idea
      • Lifestyle
      No Result
      View All Result
      DEVZONE
      No Result
      View All Result
      Home Dev Architecture

      Solid Principles: Interface Segregation Principle

      LapDam by LapDam
      March 30, 2020
      in Architecture, Design, Dev, DevOps
      0
      Solid Principles: Interface Segregation Principle

      Chữ i trong nguyên tắc SOLID. Interface Segregation Principle.

      Thay vì dùng 1 interface lớn, ta nên tách thành nhiều interface nhỏ, với nhiều mục đích cụ thể Client không nên phụ thuộc vào interface mà nó không sử dụng.

      Chắc hẳn nếu bạn đã đọc bài này thì đã phải hiểu Interface là gì.

      Interface là một lớp rỗng. Chỉ khai báo những phương thức rỗng.
      Bất kỳ Class nào cài đặt Interface đều phải cài đặt những phương thức do nó quy định

      Thử tưởng tượng bạn có 1 interface có rất nhiều phương thức, nhiều class cài đặt interface này. Mặc dù chỉ một vài phương thức được dùng.

      package com.gkatzioura.solid.segragation;
       public interface Athlete {
           void compete();
           void swim();
           void highJump();
           void longJump();
       }

      Ở đây ta có 1 Interface Athlete có đến 4 phương thức. Ta có 1 anh chàng Joe cài đặt interface này nhưng lại không dùng highJump và longJump.

      package com.gkatzioura.solid.segragation;
      public class JohnDoe implements Athlete {
      @Override
      public void compete() {
      System.out.println("John Doe started competing");
      }
      @Override
      public void swim() {
      System.out.println("John Doe started swimming");
      }
      @Override
      public void highJump() {
      }
      @Override
      public void longJump() {
      }
      }

      Vấn đề này sẽ lại xảy ra tương tự với một anh chàng khác. Vậy để giải quyết trường hợp này ta chỉ cần áp dùng interface segregation principle như sau.

      package com.gkatzioura.solid.segragation;
      public interface Athlete {
      void compete();
      }
      package com.gkatzioura.solid.segragation;
      public interface SwimmingAthlete extends Athlete {
      void swim();
      }
      package com.gkatzioura.solid.segragation;
      public interface JumpingAthlete extends Athlete {
      void highJump();
      void longJump();
      }

      Ta tách thành nhiều interface nhỏ. Khi Joe hoặc bất kì class vận động viên nào cài đặt thì chỉ cần cài đặt interface phù hợp với mình.

      package com.gkatzioura.solid.segragation;
      public class JohnDoe implements SwimmingAthlete {
      @Override
      public void compete() {
      System.out.println("John Doe started competing");
      }
      @Override
      public void swim() {
      System.out.println("John Doe started swimming");
      }
      }

      ISP sẽ làm hệ thống linh hoạt hơn, tránh code thừa. Nhưng đôi khi có những trường hợp bất khả kháng, ta vẫn phải tạo 1 interface có nhiều phương thức.
      Hãy áp dụng linh hoạt những nguyên tắc để có một chương trình hoàn hảo nhé.
      Chúc các bạn thành công.
      Ở bài sau chúng ta sẽ tìm hiểu về nguyên tắc cuối cùng Dependency Inversion Principle
      Xin chào và hẹn gặp lại

      Thả tim (6 lượt thả tim)
      Loading...
      Previous Post

      Tìm hiểu về composer.json schema (phần 2 - autoload)

      Next Post

      Sinh tồn hay đạo đức

      LapDam

      LapDam

      Next Post
      Sinh tồn hay đạo đức

      Sinh tồn hay đạo đức

      Leave a Reply Cancel reply

      Your email address will not be published. Required fields are marked *

      Recent News

      Lập trình viên không dùng máy Mac nhiều như người ta đã nghĩ

      Lập trình viên không dùng máy Mac nhiều như người ta đã nghĩ

      July 25, 2020
      Dấu hiệu nhận biết sức khỏe qua liềm móng tay

      Dấu hiệu nhận biết sức khỏe qua liềm móng tay

      June 26, 2020
      Phương thức xử lý mảng trong javascript

      Phương thức xử lý mảng trong javascript

      May 31, 2020
      Lợi ích của việc tập thể dục thường xuyên

      Lợi ích của việc tập thể dục thường xuyên

      May 25, 2020
      DEVZONE

      Browse by Category

      • Algorithm
      • Architecture
      • Database
      • Design
      • Dev
      • DevOps
      • Idea
      • IoT
      • Lifestyle
      • Network
      • News
      • Test
      • Uncategorized
      • Web
      • About
      • Advertise
      • Privacy & Policy
      • Contact

      © 2019 Devzone

      No Result
      View All Result

      © 2019 Devzone