CĂN BẢN
NÂNG CAO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Composite Design Pattern trong C# - Cách triển khai và ví dụ

Trong bài viết này mình sẽ giới thiệu đến các bạn Composite Design Pattern trong C# - Cách triển khai và ví dụ. Đây là một pattern thuộc nhóm Structural Design Pattern trong C#.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

Chúng ta sẽ cùng nhau tìm hiểu về Composite Design Pattern là gì? Cách triển khai nó trong C# và ví dụ cụ thể về nó.

Composite Design Pattern trong C# là gì?

Composite Design Pattern có chức năng sắp xếp các đối tượng thành cấu trúc cây để thể hiện một cấu trúc phân cấp. Nó cho phép chúng ta xử lý các đối tượng riêng lẻ và bố cục của các đối tượng một cách đồng nhất.

Mỗi nút trong cấu trúc cây thực hiện một nhiệm vụ. Composite Design Pattern được sử dụng khi chúng ta cần xử lý một nhóm đối tượng như việc xử lý một đối tương riêng lẻ.

Bài viết này được đăng tại [free tuts .net]

composite 01 png

Ví dụ: Chúng ta có một chiếc máy tính, trong máy tính có rất nhiều các thiết bị nhỏ khác. Đó là các đối tượng riêng lẻ và máy tính chính là đối tượng tổng hợp. Khi muốn hoàn thành một chiếc máy tính ta cần lắp ráp từng thiết bị nhỏ theo một cấu trúc nhất định có sẵn.

Cách triển khai và ví dụ về Composite Design Pattern trong C#

Trong phần này mình sẽ thực hiển triển khai Composite Design Pattern trong C# thông qua một ví dụ cụ thể. Giả sử chúng ta cần lắp ráp một chiếc máy tính, khi đó cần tách nhỏ các thiết bị và xem định giá của nó.

Mình sẽ thực hiện chương trình theo từng bước như sau:

Bước 1: Tạo interface IComponent.

Ở đây chúng ta sẽ định nghĩa các chức năng chung của chương trình, ví dụ mình định nghĩa giá của các thiết bị.

IComponent.cs
using System;
using System.Collections.Generic;
using System.Text;

namespace Composite_Design_Pattern
{
    public interface IComponent
    {
        void DisplayPrice();
    }
}

Bước 2: Tạo class Leaf.

Class này triển khai interface IComponent, do đó chúng ta cần cung cấp triển khai cho phương thức DisplayPrice(). Tạo hai thuộc tính name, price để hiển thị tên thiết bị và giá của nó.

Cuối cùng sẽ hiển thị hai thuộc tính này bằng cách sử dụng phương thức DisplayPrice().

Leaf.cs
using System;
using System.Collections.Generic;
using System.Text;

namespace Composite_Design_Pattern
{
    public class Leaf : IComponent
    {
        public int Price { get; set; }
        public string Name { get; set; }
        public Leaf(string name, int price)
        {
            this.Price = price;
            this.Name = name;
        }

        public void DisplayPrice()
        {
            Console.WriteLine(Name + " : " + Price);
        }
    }
}

Bước 3: Tạo class Composite.

Trong class sử dụng phương thức AddComponent() để thêm các thành phần con, vì đây là class tổng hợp các thành phần. Class này thực hiện interface IComponent và là một phần của phương thức DisplayPrice().

Composite.cs
using System;
using System.Collections.Generic;
using System.Text;

namespace Composite_Design_Pattern
{
    public class Composite : IComponent
    {
        public string Name { get; set; }
        List<IComponent> components = new List<IComponent>();
        public Composite(string name)
        {
            this.Name = name;
        }
        public void AddComponent(IComponent component)
        {
            components.Add(component);
        }

        public void DisplayPrice()
        {
            Console.WriteLine(Name);
            foreach (var item in components)
            {
                item.DisplayPrice();
            }
        }
    }
}

Bước 4: Tạo class Program.

Trong class này chúng ta cần tạo cấu trúc cây, sau đó hiển thị giá thành phần tương ứng bằng cách gọi phương thức DisplayPrice().

Program.cs
using System;

namespace Composite_Design_Pattern
{
    class Program
    {
        static void Main(string[] args)
        {
            //tạo đối tượng leaf
            IComponent hardDisk = new Leaf("Hard Disk", 2000);
            IComponent ram = new Leaf("RAM", 3000);
            IComponent cpu = new Leaf("CPU", 2000);
            IComponent mouse = new Leaf("Mouse", 2000);
            IComponent keyboard = new Leaf("Keyboard", 2000);
            //tạo đối tượng composite
            Composite motherBoard = new Composite("Peripherals");
            Composite cabinet = new Composite("Cabinet");
            Composite peripherals = new Composite("Peripherals");
            Composite computer = new Composite("Computer");
            //tạo cấu trúc cây
            motherBoard.AddComponent(cpu);
            motherBoard.AddComponent(ram);

            cabinet.AddComponent(motherBoard);
            cabinet.AddComponent(hardDisk);

            peripherals.AddComponent(mouse);
            peripherals.AddComponent(keyboard);

            computer.AddComponent(cabinet);
            computer.AddComponent(peripherals);

            computer.DisplayPrice();
            Console.WriteLine();

            keyboard.DisplayPrice();
            Console.WriteLine();
   
            cabinet.DisplayPrice();

            Console.WriteLine("\n----------------------------------------");
            Console.WriteLine("Chuong trinh nay duoc dang tai Freetuts.net");
            Console.Read();
            
        }
    }
}

Kết quả:

composite 02 png

Như vậy là chúng ta đã cùng nhau tìm hiểu về Composite Design Pattern trong C# - Cách triển khai và ví dụ cụ thể về nó. Ở bài tiếp theo mình sẽ giới thiệu đến các bạn Proxy Design Pattern trong C#.

Cùng chuyên mục:

Memento Design Pattern trong C# - Cách triển khai và ví dụ

Memento Design Pattern trong C# - Cách triển khai và ví dụ

Interpreter Design Pattern trong C# - Cách triển khai và ví dụ

Interpreter Design Pattern trong C# - Cách triển khai và ví dụ

Strategy Design Pattern trong C# - Cách triển khai và ví dụ

Strategy Design Pattern trong C# - Cách triển khai và ví dụ

Visitor Design Pattern trong C# - Cách triển khai và ví dụ

Visitor Design Pattern trong C# - Cách triển khai và ví dụ

Command Design Pattern trong C# - Cách triển khai và ví dụ

Command Design Pattern trong C# - Cách triển khai và ví dụ

Observer Design Pattern trong C# - Cách triển khai và ví dụ

Observer Design Pattern trong C# - Cách triển khai và ví dụ

Iterator Design Pattern trong C# - Cách triển khai và ví dụ

Iterator Design Pattern trong C# - Cách triển khai và ví dụ

Proxy Design Pattern trong C# - Cách triển khai và ví dụ

Proxy Design Pattern trong C# - Cách triển khai và ví dụ

Bridge Design Pattern trong C# - Cách triển khai và ví dụ

Bridge Design Pattern trong C# - Cách triển khai và ví dụ

Decorator Design Pattern trong C# - Cách triển khai và ví dụ

Decorator Design Pattern trong C# - Cách triển khai và ví dụ

Facade Design Pattern trong C# - Cách triển khai và ví dụ

Facade Design Pattern trong C# - Cách triển khai và ví dụ

Adapter Design Pattern trong C# - Cách triển khai và ví dụ

Adapter Design Pattern trong C# - Cách triển khai và ví dụ

Singleton Design Pattern trong C# - Cách triển khai và ví dụ

Singleton Design Pattern trong C# - Cách triển khai và ví dụ

Prototype Design Pattern trong C# - Cách triển khai và ví dụ

Prototype Design Pattern trong C# - Cách triển khai và ví dụ

Builder Design Pattern trong C# - Cách triển khai và ví dụ

Builder Design Pattern trong C# - Cách triển khai và ví dụ

Tự viết ứng dụng quản lý xe ra vào C# Winforms và Firebase

Tự viết ứng dụng quản lý xe ra vào C# Winforms và Firebase

Trong bài viết này Freetuts chia sẽ cho các bạn một ứng dụng khá thú…

Factory Design Pattern trong C# - Cách triển khai và ví dụ

Factory Design Pattern trong C# - Cách triển khai và ví dụ

Chúng ta sẽ tìm hiểu về Factory Design Pattern trong C# là gì? Cách triển…

Hướng dẫn giải phương trình bậc hai trong C#

Hướng dẫn giải phương trình bậc hai trong C#

Giải phương trình bậc nhất ax + b = 0 trong C#

Giải phương trình bậc nhất ax + b = 0 trong C#

Cách nối hai mảng trong C# bằng hai cách khác nhau

Cách nối hai mảng trong C# bằng hai cách khác nhau

Top