۳۰ شهریور ۱۴۰۳

Techboy

اخبار و اطلاعات روز تکنولوژی

نحوه استفاده از الگوی شی تهی در دات نت

از الگوی شی تهی در دات نت استفاده کنید تا نیازی به بررسی های پوچ نداشته باشید و از خطاهای زمان اجرا در برنامه های خود جلوگیری کنید.

از الگوی شی تهی در دات نت استفاده کنید تا نیازی به بررسی های پوچ نداشته باشید و از خطاهای زمان اجرا در برنامه های خود جلوگیری کنید.

اگر بررسی‌های پوچ به درستی اجرا نشود، ممکن است اغلب با استثناهای مرجع تهی در برنامه‌های خود مواجه شوید. یک استثنای مرجع تهی به طور ناگهانی اجرای برنامه شما را خاتمه می دهد مگر اینکه به درستی در کد شما مدیریت شود. الگوی شی تهی این مشکل را حل می کند و روشی زیبا برای مدیریت استثناهای مرجع تهی در کدتان به شما ارائه می دهد.

این مقاله به این موضوع می‌پردازد که چگونه می‌توانیم الگوی شی تهی را در سی شارپ با نمونه‌های کد مربوطه در هر کجا که قابل اجرا است پیاده‌سازی کنیم. برای کار با نمونه کدهای ارائه شده در این مقاله، باید Visual Studio 2022 را در سیستم خود نصب کنید. اگر قبلاً نسخه‌ای ندارید، می‌توانید Visual Studio 2022 را از اینجا بارگیری کنید.

یک پروژه برنامه کاربردی کنسول در ویژوال استودیو ایجاد کنید

ابتدا، اجازه دهید یک پروژه برنامه کاربردی کنسول NET Core در ویژوال استودیو ایجاد کنیم. با فرض اینکه Visual Studio 2022 در سیستم شما نصب شده است، مراحل ذکر شده در زیر را برای ایجاد یک پروژه برنامه کاربردی کنسول NET Core جدید دنبال کنید.

  1. Visual Studio IDE را راه اندازی کنید.
  2. روی “ایجاد پروژه جدید” کلیک کنید.
  3. در پنجره “ایجاد پروژه جدید”، “Console App (.NET Core)” را از لیست الگوهای نمایش داده شده انتخاب کنید.
  4. بعدی را کلیک کنید.
  5. در پنجره “پیکربندی پروژه جدید خود” که در ادامه نشان داده شده است، نام و مکان پروژه جدید را مشخص کنید.
  6. بعدی را کلیک کنید.
  7. در پنجره «اطلاعات اضافی»، «NET 7.0 (Standard Term Support)» را به عنوان نسخه چارچوبی که می‌خواهید استفاده کنید، انتخاب کنید.
  8. روی ایجاد کلیک کنید.
از DirectML برای آموزش مدل های یادگیری ماشین PyTorch در رایانه شخصی استفاده کنید

ما از این پروژه برنامه کاربردی کنسول NET Core برای کار با الگوی طراحی شی تهی در بخش‌های بعدی این مقاله استفاده خواهیم کرد.

الگوی شی تهی چیست؟

الگوی شی تهی یک الگوی طراحی نرم افزار رفتاری است که برای کپسوله کردن مدیریت مقادیر تهی در یک زبان برنامه نویسی شی گرا استفاده می شود. از آن برای کمک به بهبود خوانایی و قابلیت نگهداری کد با حذف نیاز به بررسی‌های تهی صریح استفاده می‌شود.

الگوی شی null یک کلاس انتزاعی را تعریف می کند که یک مقدار null را نشان می دهد. سپس یک زیر کلاس بتن ایجاد می‌شود که از کلاس انتزاعی به ارث می‌رسد و اجرای ملموسی را برای همه روش‌ها فراهم می‌کند. هر زمان که یک مقدار تهی باید نمایش داده شود، از این زیر کلاس بتن در سرتاسر پایه کد استفاده می شود.

چرا از الگوی شی تهی استفاده کنیم؟

دلایل مختلفی برای استفاده از الگوی شی تهی هنگام کار با اشیاء در C# وجود دارد. اول، می تواند به جلوگیری از خطاهای مرجع تهی کمک کند. دوم، می‌تواند کد را با اجتناب از بررسی مقادیر تهی خواناتر کند. سوم، می‌تواند با اجتناب از فراخوانی‌های غیرضروری به روش‌ها و ویژگی‌ها، عملکرد را بهبود بخشد. در نهایت، می‌تواند واحد کد آزمایشی را آسان‌تر کند.

پیاده سازی الگوی شی تهی در سی شارپ

برای پیاده‌سازی الگوی شی تهی در سی شارپ، سه مرحله زیر را دنبال می‌کنیم.

  1. یک رابط یا کلاس انتزاعی را تعریف کنید.
  2. اجرای ملموس متدهای کلاس انتزاعی یا واسط را در کلاسی که یکی از آنها را گسترش می دهد ارائه دهید.
  3. با نادیده گرفتن متدهای کلاس پایه انتزاعی یا رابط و برگرداندن مقادیر مناسب برای شی تهی خود، یک پیاده سازی تهی تعریف کنید.
تاریخچه مختصری از روش شناسی چابک

یک کلاس انتزاعی در C# ایجاد کنید

در پروژه کنسولی که قبلاً ایجاد شده بود، کلاسی به نام AbstractProduct ایجاد کنید، کد پیش‌فرض تولید شده را حذف کنید و کد زیر را وارد کنید.

 
public abstract class AbstractProduct
{
    public abstract int Id { get; set; }
    public abstract string Name { get; set; }
    public abstract string GetProductDetails();
}

متدهای کلاس abstract را در سی شارپ پیاده سازی کنید

بعد، یک کلاس جدید دیگر با نام Product در فایلی به نام Product.cs ایجاد کنید. کد تولید شده پیش فرض را حذف کنید و به جای آن کد زیر را وارد کنید.

 
public class Product : AbstractProduct
{
    public override int Id
    {
        get;
        set;
    }
    public override string Name
    {
        get;
        set;
    }
    public override string GetProductDetails()
    {
        return $"Product Id: {Id}, Product Name: {Name}";
    }
}

یک کلاس برای مدیریت مقادیر تهی در سی شارپ پیاده سازی کنید

یک کلاس به نام NullProduct ایجاد کنید تا مقادیر null را مدیریت کند، کد پیش‌فرض ایجاد شده را حذف کنید و کد زیر را وارد کنید.

 
public class NullProduct : AbstractProduct
{
    public override int Id
    {
        get;
        set;
    }
    public override string Name
    {
        get;
        set;
    }
    public override string GetProductDetails()
    {
        return $"Product Name: {Name}";
    }
}

مثال الگوی شی تهی ما را در سی شارپ کامل کنید

در نهایت، کلاس ProductRepository را ایجاد می کنیم که برای کار با داده های محصول برنامه مثال خود استفاده می شود. ProductRepository حاوی روشی به نام GetProduct است که شناسه محصول را به عنوان پارامتر می‌پذیرد و یا یک نمونه محصول (در صورت یافتن محصول) یا یک نمونه از NullProduct را در صورت یافت نشدن محصول برمی‌گرداند.

 
public class ProductRepository
{
    List<Product> products = new List<Product>();
    NullProduct? NotFound = new() { Id = -1, Name = "Not Available" };
    public ProductRepository()
    {
        products.Add(
            new Product()
            {
                Id = 1,
                Name = "DELL Laptop"
            });
        products.Add(
            new Product()
            {
                Id = 2,
                Name = "Lenovo Laptop"
            });
    }
    public AbstractProduct GetProduct(int id)
    {
        AbstractProduct product = products.Find(x => x.Id == id);
        return product ?? NotFound;
    }
}

برنامه را اجرا کنید

اکنون، از کد زیر برای بازیابی یک نمونه محصول استفاده کنید و در صورت یافتن، با روش GetProductDetails تماس بگیرید تا جزئیات مربوط به محصول را دریافت کنید.

 
ProductRepository productRepository = new ProductRepository();
var product = productRepository.GetProduct(1);
Console.WriteLine(product.GetProductDetails());

شکل ۱ خروجی را نشان می دهد.

MuleSoft از کیت توسعه سیاست برای دروازه API رونمایی کرد

نمونه الگوی شی تهی 01

توجه داشته باشید که چون شناسه محصول (در این مورد ۱) در لیست محصولات موجود است، جزئیات محصول (لپ تاپ DELL) نمایش داده می شود. اکنون بیایید یک شناسه محصول را که به عنوان پارامتر وجود ندارد، همانطور که در قطعه کد زیر نشان داده شده است، به متد GetProduct ارسال کنیم.

 
ProductRepository productRepository = new ProductRepository();
var product = productRepository.GetProduct(3);
Console.WriteLine(product.GetProductDetails());

این بار، محصول پیدا نخواهد شد و یک پیام مناسب در پنجره کنسول نمایش داده خواهد شد که در شکل ۲ نشان داده شده است.

نمونه الگوی شی تهی 02

الگوی طراحی شی تهی به شما کمک می کند از استثناهای مرجع تهی بالقوه اجتناب کنید، کد شما را ساده می کند، و میزان درهم و برهمی که با روش های سنتی برای مدیریت مقادیر تهی مرتبط است را کاهش می دهد. با استفاده از یک شی تهی به جای مقدار تهی، می‌توانید به زیبایی از استثناهای زمان اجرا جلوگیری کنید و نگهداری کد خود را در طولانی مدت آسان‌تر کنید.