Magento có bao nhiêu mẫu thiết kế?


15

Magento 2 có bao nhiêu mẫu thiết kế?

Câu trả lời:


37

Mẫu thiết kế Magento 1/2

Phần 1: MVC

Magento sử dụng một mẫu MVC độc đáo, sử dụng lớp cấu hình dựa trên DOM. Nó tận dụng xml để điều khiển cấu hình và hành động của ứng dụng trên cấu trúc Model-View-Controller thông thường.

Phần 2: Bộ điều khiển phía trước

Magento sử dụng mẫu Bộ điều khiển phía trước để triển khai quy trình công việc cho ứng dụng của nó. Nó có một điểm nhập duy nhất (index.php) cho tất cả các yêu cầu của nó. Chúng ta hãy xem làm thế nào nó hoạt động.

Phần 3: Nhà máy

Phương thức Factory được sử dụng để khởi tạo các lớp trong Magento. Bạn khởi tạo một lớp trong Magento bằng cách gọi một phương thức thích hợp chuyển một tên trừu tượng đại diện cho một nhóm lớp theo sau là một tên lớp. Các nhóm lớp và trừu tượng thích hợp của chúng được khai báo trong các tệp XML cấu hình của bạn trong thư mục / etc / của mô-đun.

Phần 4: Đơn

Giống như sự trừu tượng của lớp nhà máy và các nhóm lớp trong Magento, mẫu Singleton được khởi tạo cho các Khối và Lớp giống nhau.

Phần 5: Đăng ký

Mẫu đăng ký về cơ bản là một mẫu cho phép mọi đối tượng hoặc dữ liệu có sẵn trong phạm vi toàn cầu công khai cho mọi tài nguyên sử dụng.

Phần 6: Nguyên mẫu

Mẫu Prototype trong Magento được sử dụng như một phần mở rộng của mẫu Tóm tắt Factory. Nó đảm bảo rằng một lớp con thích hợp được khởi tạo thông qua các loại thích hợp được gán cho một đối tượng. Điều đó có nghĩa là gì? Về cơ bản, điều đó có nghĩa là bất cứ khi nào bạn cần lấy một lớp cụ thể được xác định thông qua kiểu cha của nó, mẫu nguyên mẫu đảm bảo bạn có được lớp đúng có thể xử lý những gì bạn cần.

Phần 7: Nhóm đối tượng

Mẫu đối tượng nhóm giữ cho các đối tượng sẵn sàng để sử dụng nhiều lần thay vì khởi tạo lại chúng và phá hủy chúng sau khi hoàn thành. Đó là một cách tuyệt vời để tiết kiệm tiêu thụ bộ nhớ và tính toán chu kỳ.

Phần 8: Lặp

Mẫu Iterator là một mẫu thiết kế cho phép một đối tượng đi qua các phần tử của một lớp khác. Điều này cho phép bạn chỉ định một trình vòng lặp và cho phép nhiều bộ dữ liệu khác nhau được truyền mà không thay đổi cấu trúc cơ bản cho phép lặp.

Phần 9: Tải lười

Lazy Loading là một mẫu thiết kế làm trì hoãn việc tải một đối tượng cho đến khi đối tượng được gọi. Với Magento, họ không sử dụng điều này với các đối tượng, nhưng dữ liệu.

Phần 10: Định vị dịch vụ

Trình định vị dịch vụ là một mẫu thiết kế cho phép người dùng có được một dịch vụ bằng cách gói gọn quá trình bên trong một lớp trừu tượng. Điều này cho phép người dùng truy xuất dịch vụ phù hợp hoặc tốt nhất mà không cần biết dịch vụ đó là gì trong thời gian chạy.

Phần 11: Mô-đun

Mẫu thiết kế mô-đun là một dạng lập trình mô-đun, nhấn mạnh việc phân nhóm chức năng của chương trình thành các mô-đun độc lập, có thể hoán đổi cho nhau.

Phần 12: Người quan sát

Mẫu quan sát là nơi trình lắng nghe sự kiện được đặt tại một điểm nhất định trong khi thực thi ứng dụng. Các thành phần khác của ứng dụng có thể gắn móc vào trong trình nghe sự kiện này và thực thi mã của chúng trong thời điểm này.

Phần 13: Bản ghi hoạt động

Các đối tượng là một đại diện của một hàng trong bảng cơ sở dữ liệu. Các đối tượng này phải có các thuộc tính phản ánh các cột biểu thị cấu trúc của bảng và các phương thức để cho phép sửa đổi các thuộc tính này trong cơ sở dữ liệu.

Việc sử dụng mô hình của Magento

Các lớp kế thừa sau lớp Mage_Core_Model_Abauge có quyền truy cập vào các phương thức load (), save () và xóa () cho phép tải, sửa đổi, tạo hoặc xóa các bản ghi trong bảng mà lớp được kết nối. Ngoài ra, lớp Mage_Core_Model_Abauge thừa hưởng từ Varien_Object, cho phép chúng ta truy cập vào các phương thức thực sự kỳ diệu __set () và __get () chịu trách nhiệm ánh xạ tự động các cột trong bảng cơ sở dữ liệu với các thuộc tính của một đối tượng nhất định.

Bổ sung Magento 2

THIẾT KẾ HỢP ĐỒNG DỊCH VỤ

Magento là một hệ thống dựa trên phần mở rộng hoặc mô-đun, cho phép nhà phát triển bên thứ ba tùy chỉnh và ghi đè lên các phần cốt lõi của khung. Các tùy chỉnh này có thể dẫn đến một số vấn đề, ví dụ, nó sẽ trở thành cho các nhà phát triển để theo dõi các tùy chỉnh được thực hiện bởi các tiện ích mở rộng bên ngoài. Do đó, để khắc phục Magento này đi kèm với mô hình hợp đồng dịch vụ. Hợp đồng dịch vụ là một tập hợp các giao diện hoạt động như một lớp giữa người dùng cuối và lớp doanh nghiệp. Do đó, thay vì trực tiếp phơi bày logic kinh doanh để tùy chỉnh cho người dùng cuối, một lớp được gọi là hợp đồng dịch vụ xuất hiện ở giữa.

Hợp đồng dịch vụ tăng cường tính mô-đun của Magento. Giúp các thương nhân nâng cấp dễ dàng Magento Đảm bảo API được xác định rõ và bền mà các mô-đun Magento bên ngoài và bên ngoài khác thực hiện. Cung cấp một cách dễ dàng để hiển thị logic nghiệp vụ thông qua giao diện REST hoặc SOAP.

QUẢN LÝ ĐỐI TƯỢNG

Bản thân nó bao gồm nhiều mô hình khác nhau như: - Phụ thuộc tiêm, Singleton, Nhà máy, Nhà máy trừu tượng, Hợp chất, chiến lược, CQRS, Nhà trang trí và nhiều hơn nữa. Chúng tôi sẽ thảo luận về một số mô hình được sử dụng nhiều nhất trong số này. Trình quản lý đối tượng có vai trò rất lớn, Magento cấm sử dụng trực tiếp. Trình quản lý đối tượng chịu trách nhiệm triển khai các mẫu nhà máy, đơn và proxy. Nó tự động khởi tạo tham số trong các hàm tạo của lớp. Trước khi chuyển sang tương lai, hãy hiểu về các đối tượng tiêm và không tiêm: -

ĐỐI TƯỢNG DỰ ÁN

Họ không có danh tính riêng của họ như EventManager, CustomerAccountManloymentService.

ĐỐI TƯỢNG KHÔNG ĐỐI TƯỢNG

Chẳng hạn như khách hàng, sản phẩm, v.v. Những thực thể này thường có danh tính và trạng thái của họ, vì họ có danh tính của họ, điều quan trọng là phải biết về trường hợp chính xác của thực thể chúng ta phải làm việc.

BỆNH VIỆN PHỤ THUỘC

Nó là một thay thế cho Mage trong magento 1. Đây là một khái niệm tiêm đối tượng phụ thuộc thông qua môi trường bên ngoài thay vì tạo ra chúng bên trong. Do đó, chúng tôi sẽ yêu cầu tài nguyên khi đối tượng của chúng tôi đang được tạo thay vì tạo tài nguyên khi cần. Điều này giúp việc sửa đổi và kiểm tra trong tương lai trở nên rất dễ dàng bằng cách chế nhạo các đối tượng cần thiết.

NHÀ MÁY THỰC PHẨM HOẶC LỚP NHÀ MÁY:

Trong các lớp Magento 2 Factory tạo một lớp giữa trình quản lý đối tượng và mã doanh nghiệp. Các lớp Factory không cần định nghĩa rõ ràng vì chúng được tạo tự động. Chúng ta nên tạo các lớp nhà máy cho các đối tượng không tiêm.

THỰC TRẠNG PROXY

Các lớp proxy được sử dụng để làm việc thay cho một lớp khác và trong Magento 2 đôi khi chúng được sử dụng thay cho các lớp đói tài nguyên. Để hiểu những lớp proxy nào, hãy xem lý do dẫn đến sự xuất hiện của các lớp proxy. Như chúng ta đã biết Magento sử dụng hàm tạo của hàm tạo để tạo đối tượng và khi chúng ta khởi tạo một đối tượng, tất cả các lớp trong hàm tạo của nó cũng sẽ tạo ra một chuỗi khởi tạo thông qua một hàm tạo, điều này thực sự có thể làm chậm quá trình và ảnh hưởng đến hiệu suất của ứng dụng , vì vậy để dừng khởi tạo chuỗi, Magento sử dụng các lớp proxy.

Hãy xem mã sau: -

Magento\Catalog\Model\Product\Attribute\Source\Status\Proxy

Magento\Catalog\Model\Product\Link\Proxy

Vì vậy, trong đoạn mã trên, chúng tôi đang sử dụng các lớp proxy cho danh mục ProducttStatus và ProductLink. Khi chúng ta chạy

 php bin/magento setup:di:compile 

Magento tạo các lớp proxy một cách nhanh chóng bằng cách sử dụng di.xml với một số quy ước cố định, do đó thay thế đối tượng ban đầu bằng một đối tượng lớp proxy. Bây giờ chúng ta hãy nhìn vào lớp proxy của chúng tôi để hiểu nó hoạt động như thế nào

Một số quy ước phổ biến Magento tuân theo trong khi tạo proxy: -

  • Không gian tên của lớp proxy sẽ giống như bản gốc (Magento \ Catalog \ Model \ Product \ Attribution \ Source \ Status)
  • Lớp proxy chỉ mở rộng một đối tượng, tức là trình quản lý đối tượng
  • Có các hàm ma thuật như __s ngủ, __wake chỉ được gọi trên một số hành động và chức năng nhất định như __clone sẽ tạo một đối tượng của lớp gốc và sẽ chỉ cung cấp đối tượng khi cần (sử dụng mô hình thiết kế tải lười biếng ), do đó cải thiện hiệu suất của ứng dụng https://devdocs.magento.com/guides/v2.0/extension-dev-guide/proxies.html

Plugin (đánh chặn)

Tổng quat

Một plugin, hay bộ chặn, là một lớp sửa đổi hành vi của các hàm lớp công khai bằng cách chặn một lệnh gọi hàm và chạy mã trước, sau hoặc xung quanh lệnh gọi hàm đó. Điều này cho phép bạn thay thế hoặc mở rộng hành vi của các phương thức gốc, công khai cho bất kỳ lớp hoặc giao diện nào.

Các tiện ích mở rộng muốn chặn và thay đổi hành vi của phương thức công khai có thể tạo một lớp Plugin được gọi là plugin.

Cách tiếp cận đánh chặn này làm giảm xung đột giữa các tiện ích mở rộng thay đổi hành vi của cùng một lớp hoặc phương thức. Việc triển khai lớp Plugin của bạn thay đổi hành vi của một chức năng lớp, nhưng nó không thay đổi chính lớp đó. Bởi vì chúng có thể được gọi tuần tự theo thứ tự sắp xếp được cấu hình, các bộ chặn này không xung đột với nhau.

Hạn chế

Plugin không thể được sử dụng với bất kỳ điều nào sau đây:

  • Phương pháp cuối cùng
  • Lớp cuối cùng
  • Phương pháp không công khai
  • Phương thức tĩnh
  • __xây dựng
  • Các loại ảo
  • Các đối tượng được khởi tạo trước Magento \ Framework \ Interception được khởi động
  • Các đối tượng không được ObjectManager khởi tạo (ví dụ: bằng cách sử dụng trực tiếp mới). https://devdocs.magento.com/guides/v2.0/extension-dev-guide/plugins.html

Đối tượng

Tổng quat

Các ứng dụng lớn, chẳng hạn như ứng dụng Magento, sử dụng trình quản lý đối tượng để tránh mã soạn sẵn khi soạn thảo các đối tượng trong khi khởi tạo.

Trong khung Magento, việc triển khai ObjectManagerInterface thực hiện các nhiệm vụ của người quản lý đối tượng.

Trách nhiệm

Người quản lý đối tượng có các trách nhiệm sau:

Tạo đối tượng trong các nhà máy và proxy. Thực hiện mẫu singleton bằng cách trả về cùng một thể hiện chung của một lớp khi được yêu cầu. Quản lý phụ thuộc bằng cách khởi tạo lớp ưa thích khi hàm tạo yêu cầu giao diện của nó. Tự động khởi tạo các tham số trong các hàm tạo của lớp. https://devdocs.magento.com/guides/v2.0/extension-dev-guide/object-manager.html

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.