C# 工厂模式简述。 unsafe代码块的使用

本文简要介绍工厂模式的三种形式:简单工厂、方法工厂和抽象工厂,强调它们如何简化对象创建过程,提高代码可读性。同时,探讨C#中的unsafe代码块,它允许操作内存和使用指针,但仅适用于非托管对象,并提醒开发者需要注意非托管对象的正确释放以防止内存泄漏。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

工厂模式有三种,简单、方法‘抽象三种,我理解为一维,二维,三维的层面,主要就是返回方法,不用自己手动new,而是依靠返回。

就不贴代码了。

工厂模式嘛,就是你想要什么对象,不用通过自己手动new,而是通知“工厂”,让他帮你制作,简单来说就是工厂方法return给你一个对象。

一维二维三维的层面就是简单工厂、方法工厂、抽象工厂三种。

1、简单工厂就是一对一的模式。Pizza是事先定义好的类,然后通过GetPizza方法,返回一个对象。

public Pizza GetPizza()
{
    return new Pizza();
}

2、方法工厂就是一对多的模式。Pizza是基类,MeatPizza和VegetablePizza和NormalPizza是Pizza的派生类

public Pizza GetPizza(string PizzaName)
{
    if (PizzaName == "MeatPizza")
    {
        return new MeatPizza();
    }
    else if (PizzaName == "VegetablePizza")    
    {
        return new VegetablePizza();
    }
    else
    {
        return new NormalPizza();
    }
}

3、抽象工厂就是多对多的模式。

public static void Main(string[] args)
{
    PizzaStore cnPizzaStore = new CNPizzaStore();
    Pizza pizza = cnPizzaStore.GetPizza("MeatPizza");

    PizzaStore jpPizzaStore = new JPPizzaStore();
    Pizza pizza = jpPizzaStore.GetPizza("VegetablePizza");
}

public abstract class PizzaStore()
{
    // Code Here...
}

public class CNPizzaStore:PizzaStore
{
    // Code Here...
}

public class JPPizzaStore:PizzaStore
{
    // Code Here...
}

public class USPizzaStore:PizzaStore
{
    // Code Here...
}

大概就是这个样子,编码方式,编码风格不唯一,可以用其他的形式,比如泛型,委托等等。。。这里这么写看得比较清楚。。

不知道这么写,是否大概能懂了,其实工厂模式的主要作用就是,想要什么对象,然后告诉工厂,工厂new给你,这样大概是逻辑比较清晰,因为一旦项目复杂起来,可能代码上,可读性就不会很高。

 

unsafe是c#可以让程序员操作内存,使用指针的一种机制,但是只能对非托管对象使用,对托管类对象是无法使用的。释放非托管对象一般是通过Close方法,或者在方法内部定义Dispose方法来进行释放。如果忘记释放了,那可以在类的析构方法中假如对非托管对象的释放操作,避免非托管对象的泄露,但是也可能出现一种情况是,在对象被CLR回收之前,非托管对象已经泄露了。因此即使回收非托管类型的对象是十分有必要的。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值