Bài đăng

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

Ứng dụng Design Pattern trong thực tế

ỨNG DỤNG DESIGN PATTERN I. Sơ lược Ứng dụng của design pattern trong thực tế phân tích thiết kế phần mềm hướng đối tượng là rất lớn. Hầu như cứ  ở  đâu có phần mềm hướng  đối tượng thì  ở  đó có design pattern. Design pattern được vận dụng linh hoạt và dưới nhiều hình thức khác nhau. Sau đây là một vài ứng dụng điển hình của Design pattern. II. Framework Framework là một tập các lớp được đóng gói để có thể dùng lại cho các ứng dụng cụ thể. Ứng dụng cụ thể sẽ tùy chỉnh lại các lớp này như kế thừa, dẫn xuất để tạo ra các  lớp mới phục vụ cho mục đích của ứng dụng. Framework phải có được những đặc điểm là : nhỏ gọn, đầy đủ, dễ customize, tính khái quát cao,... Tập các lớp trong framework được cài đặt và thiết lập các mối quan hệ theo các mẫu design pattern. III. Kiến trúc Add – Ins Đây là một mô hình ứng dụng cho phép tạo ra một giao diện ghép nối các môđun ứng dụng một cách dễ dàng. Ứng dụng gồm có nhân ứng dụng (core) và các môđun ghép nối là các gói DLL. Cấu hì

[Nhóm Behavioral] Mẫu Observer

Hình ảnh
Mẫu OBSERVER I. Khái niệm Mẫu Observer là mẫu định nghĩa một phụ thuộc 1 - nhiều giữa các đối tượng để khi một đối tượng thay đổi trạng thái thì tất cả các phục thuộc của nó được nhận biết và cập nhật tự động. Trong đó: Subject : là một lớp trừu tượng, đóng vai trò 1 trong quan hệ 1-nhiều, có các hàm để  gắn,  tách và hàm thông báo đến các đối tượng Observer. Nó sẽ chứa danh sách các Observer có quan hệ với nó. ConcreteSubject : là lớp con kế thừa Subject để trữ trạng thái của ConcreteObserver cần quan tâm. Đồng thời sẽ gửi tín hiệu đến các observer của nó khi trạng thái của nó đã thay đổi. Observer : định nghĩa một lớp trừu tượng cho thao tác cập nhật các đối tượng mà sẽ nhận tín hiệu của sự thay đổi tại chủ thể Subject, đóng vai trò nhiều trong quan hệ 1-nhiều. ConcreteObserver : là lớp con kế thừa Observer để override lại hàm cập nhật của Observer đẻ giữ các trạng thái cố định của nó. Nó duy trì một tham chiếu tới một đối tượng ConcreteSubject. Đồng thơi lưu

[Nhóm Creational] Mẫu Builder

Hình ảnh
Mẫu BUILDER I. Khái niệm Mẫu builder dùng để chia một công việc khởi tạo phức tạp của một đối tượng ra riêng rẽ từ đó có thể tiến hành khởi tạo đối tượng ở các hoàn cảnh khác nhau. Trong đó : Builder : định nghĩa một lớp trừu tượng cho việc tạo ra các thành phần của một đối tượng sản phẩm Product. ConcreteBuilder : là lớp con kế thừa từ lớp Builder để override lại hàm tạo từng phần của một sản phẩm, lắp ráp các phần vào sản phẩm, nó sẽ chứa biến sản phẩm bên trong nó, đồng thời đưa ra một hàm để xuất sản phẩm. Product : là sản phẩm bao gồm nhiều phần cấu thành nên. Director : là nơi gọi xây dựng các phần để tạo ra một Product thông qua biến Builder II. Tần suất sử dụng Trung bình thấp III. Ví dụ tình huống Trong những ứng dụng lớn, với nhiều các chức năng phức tạp và mô hình giao  diện đồ sộ. Việc khởi tạo ứng dụng thường gặp nhiều khó khăn. Chúng ta không thể dồn tất cả công việc khởi tạo này cho

Design pattern là gì?

Hình ảnh
DESIGN PATTERN I. Design pattern là gì? - Design pattern là một kỹ thuật trong lập trình hướng đối tượng , là một tập các giải pháp cho các vấn đề cụ thể trong việc phân tích thiết kế hệ thống phần mềm. Nói nôm na design pattern giống như là bài giải mẫu của một bài toán nào đó. - Design pattern cần thiết cho cả các nhà lập trình và nhà phân tích thiết kế. - Design pattern được dùng ở khắp mọi nơi, trong các phần mềm hướng đối tượng, các hệ thống lớn, trong các chương trình trò chơi,... II. Tại sao phải dùng design pattern? - Tái sử dụng: việc thiết kế một một phần mềm hướng đối tượng phục vụ cho mục đích dùng lại là rất khó, chúng ta phải xác định được có những lớp đối tượng nào, quan hệ giữa chúng ra sao, có kế thừa hay không,... Thiết kế của chúng ta phải đảm bảo không chỉ giải quyết được các vấn đề hiện tại, mà còn có thể tiến hành mở rộng trong tương lai. Vì vậy, nếu phần mềm không có một thiết kế tốt, việc sau này khi mở rộng phần mềm lại phải thiết kế lại

[Nhóm Creational] Mẫu Factory Method

Hình ảnh
Mẫu Factory METHOD I. Khái niệm Mẫu Factory Method bao gồm một lớp trừu tượng chứa một hàm gọi là FactoryMethod(), hàm này có nhiệm vụ tạo ra một đối tượng sản phẩm Product, và các lớp con kế thừa từ lớp trừu tượng này có thể override lại hàm FactoryMethod() để chỉ rõ đối tượng sản phẩm nào sẽ được tạo. II. Tần suất sử dụng Cao III. Ví dụ tình huống Giả sử ta có lớp máy tính, máy tính lại phân ra làm 2 loại là PC và Laptop. Trong đó PC được lắp ráp từ các linh kiện Thùng máy và CPU, còn Laptop thì được lắp ráp từ TouchPad và CPU. Khi đó Factory Method sẽ giúp ta cài đặt như sau: Ta có hình sau: Hàm Factory ở đây là hàm Lắp_Ráp_Linh_Kiện, tùy lớp con là Laptop hay PC mà hàm Lắp_Ráp_Linh_Kiện này sẽ sử dụng những linh kiện khác nhau. IV. Đút kết kinh nghiệm Khi gặp các bài toán có dạng sau ta nên dùng mẫu Factory Method trong việc tạo lập: - Một sản phẩm lại phân làm các loại sản phẩm con. - Có nhu cầu sản xuất riêng các sản phẩm con. Ng

[Nhóm Creational] Mẫu Abstract Factory

Hình ảnh
Mẫu Abstract Factory I. Khái niệm Mẫu Abstract Factory bao gồm một lớp Factory trừu tượng (là interface hoặc lớp abstract) và các lớp con Factory cụ thể có chức năng tạo ra một tập hợp các đối tượng Product có liên quan hoặc phụ thuộc lẫn nhau. Trong đó: AbstractFactory : định nghĩa một lớp trừu tượng cho việc khởi tạo các "sản phẩm" ảo (AbstractProduct). ConcreteFactory : là lớp con kế thừa AbstractFactory để tạo ra "sản phẩm" cụ thể. AbstractProduct : định nghĩa một lớp trừu tượng cho một loại đối tượng "sản phẩm". Product : là lớp con kế thừa từ lớp "sản phẩm" ảo AbstractProduct, là các "sản phẩm" cụ thể. Client : sử dụng các lớp AbstractFactory và AbstractProduct trong hệ thống . II. Tần suất sử dụng Cao  III. Ví dụ tình huống Giả sử ta có lớp điện thoại và lớp máy tính, trong mỗi lớp này lại phân cấp thành hai lớp con là cao cấp và bình dân, ta lại có nhu cầu là tạo các sản phẩm cao cấp ở mộ

Property trong Objective-C

PROPERTY TRONG OBJECTIVE-C I. Khai báo //Trong file .h @property  (thuộc tính 1, thuộc tính 2,...) <Kiểu Dữ Liệu> <Tên Property>; //Trong file .m  @synthesize  <Tên Property>; Ví dụ: //Trong file .h @property  (nonatomic, assign)  NSInteger  tuSo; //Trong file .m @synthesize  tuSo; Ghi chú: Dùng từ khóa synthesize để trình biên dịch tự động tạo hai hàm getter và setter (trong điều kiện là ta chưa viết 2 hàm này), nếu ta đã tự viết các hàm setter và getter sẵn rồi thì trình biên dịch sẽ không tạo thêm getter và setter nữa. II. Truy cập <Tên Object>.<Tên Property>; Ví dụ: phanSoA.tuSo;  //Get phanSoA.tuSo = 2;  //Set Tương đương với: [phanSoA tuSo];  //Get [phanSoA setTuSo:2];  //Set III. Các thuộc tính -readwrite:  property có thể đọc và ghi vào biến thể hiện, đây là thuộc tính mặc định. -read-only:  property chỉ có thể đọc. -automic:  kiểm tra đảm bảo đồng bộ khi nhiều tiểu trình cùng truy cập, là