Code Monkey home page Code Monkey logo

design-patterns's Introduction

Design Pattern

Nếu bạn thực sự nghiêm túc muốn đi theo con đường trở thành một Developer giỏi một trong những kiến thức bạn phải có chính là Design Patterns

Khái niệm

  • Design Patterns (mẫu thiết kế) là một kĩ thuật trong lập trình hướng đối tượng và được sử dụng thường xuyên trong các ngôn ngữ OOP như Java,C#,Kotlin... Nó cũng cấp cho ta các mẫu (Pattern) để giải quyết các vẫn đề thường gặp, tuy bạn có thể tự nghĩ ra nhưng nó có thể không phải là tối ưu. Design pattern sẽ giúp chúng ta giải quyết những vấn đề này được tối ưu nhất.
  • Design Patterns không phụ thuộc vào ngôn ngữ nào cả bạn có thể áp dụng với phần lớn những ngôn ngữ lập trình hiện nay.
  • Bạn nghiêm túc muốn trở thành một Dev giỏi thì không thể bỏ qua Design Pattern

Tại sao chúng ta nên biết và sử dụng ?

  • Tái sử dụng lại code và dễ mở rộng
  • Là những giải pháp đã được tối ưu hóa và chúng ta có thể sử dụng tùy theo trường hợp mà không cần suy nghĩ.
  • Đồng thời tăng tốc độ phát triển và testing cho các nhà phát triển
  • Đương nhiên code sẽ trở nên dễ đọc và dễ hiểu kèm theo đó là dễ bảo trì nâng cấp về sau.
  • Tiết kiệm thời gian làm việc với code của các dev khác.

Phân loại Design Patterns

  • Trong cuốn sách Design Patterns – Elements of Reusable Object-Oriented Software - của 4 tác giả Erich Gamma, Richard Helm, Ralph Johnson và John Vlissides có 23 mẫu được định nghĩa bên trong và chia thành 3 nhóm.

Creational Patterns (Nhóm khởi tạo)

  • Bao gồm 5 mẫu : Factory Method, Abstract Factory, Builder, Prototype, Singleton.
  • Cung cấp giải pháp giúp tạo ra object và che giấu logic tạo ra nó thay vì tạo một cách trực tiếp => giúp chương trình mềm dẻo hơn khi muốn tạo object nào và theo tình huống nào.

Structural Patterns (Nhóm cấu trúc)

  • Bao gồm 7 mẫu : Adapter, Bridge, Composite, Decorator, Facade, Flyweight và Proxy.
  • Giúp ta thiết lập mối quan hệ giữa các đối tượng với nhau.

Behavioral Patterns (Nhóm tương tác)

  • Bao gồm 11 mẫu: Interpreter, Template Method, Chain of Responsibility, Command, Iterator, Mediator, Memento, Observer, State, Strategy và Visitor
  • Cung cấp giải pháp để thực hiện các hành vi của đối tượng cũng như giữa các object với nhau.

Note : Nếu các bạn muốn học Design Pattern tốt nhất các bạn cần nắm chắc được những kiến thức sau.

  • Lập trình hướng đối tượng cơ bản nhất : hiểu đối tượng là gì? thuộc tính, hàm ...
  • 4 Đặc tính cơ bản nhất của OOP: Kế thừa, Đa hình, Trừu tượng, Đóng gói.
  • Hiểu hai khái niệm về interface và abstract class, nắm được điểm giống và khác nhau giữa hai thứ này.

Kết

  • Hi vọng rằng thông qua repo và những video mình thực hiện sẽ đem đến cho các bạn một cái nhìn tổng quan về Design Pattern, để có thể góp phần giúp bạn xây dựng những ứng dụng tuyệt vời dễ dàng mở rộng, code dễ đọc dễ hiểu
  • Nếu các bạn yêu thích những bài viết như này các bạn hãy star repo cũng như theo dõi mình để có thể cập nhật những bài viết mới nhất của mình trong tương lai.
  • Và cuối cùng
 Code không chỉ cho máy đọc! Mà còn cả con người nữa hãy coi trọng người đọc vì
 tương lai người đọc code của bạn rất có thể là chính bạn.

Note:

  • Mình cũng đã làm một video giới thiệu các bạn có thể thấy ở đây

Donate

Buy Me A Coffee paypal

design-patterns's People

Contributors

doctor-blue avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.