设计模式-简单工厂模式

定义 用单独一个类来创建具体实例的过程。
类型 创建型模式
特点 使用工厂可以减少代码的耦合性,使代码的可维护性变高。遇到新的需求时,只要新增一个功能的实现,然后通过工厂将实例构建出来即可。
举例 实现两个数字的计算,运用工厂分别创建计算加、减、乘、除的不同实例。

本文以C#为例,先来看类图🔻

C#使用decimal TryParse转换时,字符串中有逗号的坑

起源

一切都要从那个线上bug说起,执行decimal.TryParse时程序并没有按照预期输出结果💔💔💔

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
string input = "1,2,3";
decimal output;
if (decimal.TryParse(input, out output))
{
    Console.WriteLine($"{output}");
}
else
{
    Console.WriteLine($"Unable to decimal {input}");
}
//这里意外的输出了 123

C#托管堆和垃圾回收

托管堆基础

分配资源

C#要求所有对象都从托管堆分配。进程初始化时,CLR划出一个地址空间区域作为托管堆。CLR还会维护一个叫NextObjPtr的指针,该指针指向下一个对象在堆中的位置。

一个区域被非垃圾填满后,CLR会分配更多的区域出来,一直重复,直到进程地址空间被填满。(32位进程最多能分配1.5GB;64位进程最多能分配8TB)