Bài đăng

Đang hiển thị bài đăng từ Tháng 2, 2020

Design Pattern | Composite Pattern

Hình ảnh
Các tòa nhà bao gồm các phòng, mặc dù các tòa nhà và phòng có chức năng hơi khác nhau. về cơ bản chúng ta coi nó là cấu trúc chung của nhà ở. Bạn đều có thể vào ra khỏi một tòa nhà hoặc một căn phòng, và cả hai đều có thể dùng để lưu trữ đồ đạc. Vì vậy, dù có thiết kế khác nhau, nhưng chúng có thể được xử lý cùng theo một cách thống nhất. The Composite Pattern đạt được 2 mục tiêu, để soạn các cấu trúc lồng nhau của 1 đối tượng theo một cách thống nhất, các mô hình theo các thiết kế cơ bản này. Một giao diện là Component đóng vai trò là superclass cho một tập hợp các class để tất cả chúng có thể được xử lý đồng nhất, điều này được thực hiện bằng polymorphism. Tất cả các lớp thực hiện phù hợp với 1 giao diện, một abstract superclass có thể được sử dụng để đặt giao diện vì cả hai đều cho phép polymorphism (đa hình). Nhưng chúng ta sẽ tập trung vào việc sử dụng interface. Lớp composite được sử dụng để tổng hợp bất kỳ lớp nào implement component interface, lớp composite sẽ cho phép bạ

Design Pattern | Adapter Pattern

Hình ảnh
Tôi chắc chắn điều này giống như một tình huống quen thuộc. Bạn có một thiết bị mong đợi một loại đầu nối, nhưng bạn lại có một đầu nối khác. Do đó, nó không khớp, bạn không thể tạo kết nối đó. Vì vậy, bạn sẽ cần có một bộ chuyển đổi để có hiệu lực, nó là một thiết bị giúp biến đầu nối khác nhau thành một thiết bị trung tính mong đợi. Bộ điều hợp thường được sử dụng vì các nhà cung cấp khác nhau sẽ có những đầu nối khác nhau phát triển cho các thiết bị của họ. Ví dụ, một đầu nối phổ biến cho thiết bị ngoại vi, như bàn phím, đã từng là PS2. Nhưng các máy tính giữa các năm 1990 bắt đầu chỉ hỗ trợ cổng USB, vì vậy, những người có bàn phím, PS2 cũ hơn cần một bộ chuyển đổi để sử dụng chúng với các máy tính mới. Bộ điều hợp này đã chuyển đổi cổng USB của máy tính thành một đầu nối mà bàn phím cũ của máy tính có thể cắm vào. Hệ thống phần mềm cũng phải đối mặt với vấn đề tương thích tương tự. Thay vì có các đầu nối vật lý, các hệ thống sẽ có các giao diện phần mềm không tương thích. Điều

Design Pattern | Facade Pattern

Hình ảnh
Khi câc bộ phận trong hệ thống của bạn trở nên lớn hơn, chúng tự nhiên trở nên phức tạp hơn. Điều này có thể gây ra sự nhầm lẫn cho các client class trong hệ thống của bạn sử dụng. Mặc dù vậy, sự phức tạp của hệ thống không phải là dấu hiệu của thiết kế kém. Phạm vi của vấn đề bạn đang cố giải quyết có thể rất lớn, nó đòi hỏi một giải pháp phức tạp. Tuy nhiên, client class sẽ thích một tương tác đơn giản hơn. The Facade Pattern Design cung cấp một giao diện đơn giản hóa duy nhất cho các lớp máy khách (client class) tương tác với hệ thống con (subsystem). Facade là gì ? Nếu bạn từng đi mua sắm tại một cửa hàng bán lẻ, ăn tại nhà hàng hoặc đặt mua bất cứ thứ gì trực tuyến, bạn đã có kinh nghiệm tương tác với Facade Pattern trong thế giới thực. Hình ảnh mình đi xuống phố tìm một nơi để ăn tối, bạn tìm kiếm điều gì khi bạn đang trên vỉa hè đường phố ? Đương nhiên, bạn tìm kiếm một dấu hiệu trên mặt tòa nhà cho biết rằng nội dung trong tòa nhà này có thể cung cấp cho bạn dịch vụ ăn uống

Design Pattern | Factory Method Pattern

Hình ảnh
Giống như một nhà máy trong thế giới thực, mục đích của các nhà máy này trong lập trình hướng đối tượng là tạo ra các đối tượng. Sử dụng nhà máy, làm cho phần mềm của bạn dễ bảo trì và thay đổi hơn vì việc tạo đối tượng xảy ra trong các nhà máy. Các phương thức sử dụng nhà máy này có thể sử dụng vào hành vi khác. Hãy tưởng tượng rằng phần mềm của bạn triển khai một cửa hàng trực tuyến và bạn muốn tạo ra các đối tượng để bán trong cửa hàng đó. Ví dụ một cửa hàng bán dao chẳng hạn. Có rất nhiều loại dao, nhưng hãy bắt đầu với dao bít tết (steak knives) và dao đầu bếp (chef knives). Bạn có một superclass dao, với các lớp phụ SteakKnife và ChefsKnife. Bạn viết một phương thức orderKnife: Đầu tiên, sẽ tạo nên đối tượng mua này, sau đó tạo nên những lô hàng. Và các chế phẩm trên con dao là: mài, đánh bóng, gói. Phương pháp của bạn giống như thế này: Phương thức đầu tiên khai báo một biến knife, sẽ tham chiếu đến đối tượng dao được tạo, các điều kiện xác định lớp con dao nào (sub class)

Design Pattern | Singleton Pattern

Singleton thuộc Creational Pattern mô tả cách để tạo ra một đối tượng. Là một trong những ví dụ đơn giản của Design Pattern, tuy nhiên, bạn sẽ thấy nó là một kỹ thuật mạnh mẽ. Như tên gọi của nó, Singleton Pattern là một cái gì đó duy nhất, chỉ có một. Nhưng nó đề cập đến cái gì ? Một điều duy nhất chúng ta muốn là gì ? Singleton Pattern đề cập đến việc chỉ có một đối tượng của một lớp. Giả sử như bạn đang lập trình mobile game Poker, hãy tưởng tượng trò chơi này có một lớp tùy chọn để lưu trữ tất cả các cài đặt cho người dùng. Những ưu tiên này bao gồm các yếu tố trực quan, chẳng hạn như màu sắc của bề mặt chơi và thiết kế của các quân bài. Hãy tưởng tượng nếu có nhiều hơn một lớp preferences tồn tại. Khi người dùng đang thiết lập tùy chọn của họ, lớp preferences nào đang lưu trữ lueaj chọn đó ? Và khi trò chơi đang được hiển thị, preferences nào được sử dụng để thiết kế hiển thị cho trò chơi ? Như bạn có thể thấy, việc có nhiều lớp preferences khác nhau không có nhiều ý nghĩa và có

Design Pattern | Gang of Four’s Pattern Catalogue

Có rất nhiều design pattern bạn có thể tìm thấy trong sách và qua internet. Một trong những cuốn sách nổi tiếng nhât về chủ đề này là Design Patterns: Elements of Reusable Object-Oriented Software, được viết bởi bốn tác giả với biệt danh, The Gang of Four. Cuốn sách rút ra từ kinh nghiệm của họ với tư cách là nhà phát triển. Trong bài viết này, chúng ta sẽ đi qua danh mục design pattern của Gang of Four, nó không phải là một cuốn sách công thức. Bạn không thể lấy các mẫu phổ quát ra khỏi nó để sử dụng vào code của mình như những mảnh ghép, thay vào đó, nó giống như các dụ pháp (tropes wiki), là một công cụ để kể chuyện thường được tìm thấy trong các tiểu thuyết, hay các bộ phim. Ví dụ ta có thể thấy một "trope" chung thường được thấy trong các câu chuyện là người anh hùng bắt đầu từ những khởi đầu khiêm tốn trong thế giới bình thường, tìm thấy một thế giới đặc biệt và phải vượt qua những thử thách để trở về nhà. Giống như những "trope" tái diễn trong các câu chu

Design Pattern | Design Pattern ?

Trong chuỗi bài viết này, chúng ta sẽ cùng khám phá về Design Pattern, để hiểu rõ về Design Pattern, bạn chắc chắn cần một kiến thức tốt về Obejct- Oriented Design, vì thế, nếu chưa cảm thấy chắc chắn, hãy tham gia tìm hiểu về Obeject- Oriented Design với mình song song với những bài viết này. Đây là một bài viết về chuyên môn, nên vào vấn đề luôn, Design Pattern là gì ? Chà, vấn đề của thiết kế và ứng dụng có thể được giải quyết thông qua mẫu thiết kế (Design Patterns) thường được áp dụng bởi các chuyên gia. Chuỗi bài viết này sẽ giúp bạn mở rộng sự hiểu biết của mình về Object- Oriented Analysis Design bằng cách học làm thế nào để ứng dụng Design Patterns để giải quyết các vấn đề thiêt kế phần mềm. Thông qua các cuộc khảo sát đã được thiết lập, bạn sẽ có một nền tảng chắc chắn để xây dựng những phần mềm phức tạp hơn. Chúng ta sẽ tìm hiểu về các nguyên tắc trong thiết kế như tái sử dụng (reusable), linh hoạt (flexible), và duy trì (maintainable). Cuối cùng, chúng ta sẽ bàn luật