嵌套类型的一个应用——factory模式(工厂模式)。所谓factory模式,是指一个能产生某种“产品”的“工厂”,其中产生产品只能由工厂产生。例如一个银行账号(Account
)只能有银行(Bank
)来产生。在C#中,账号可以由Bank
的内部类(Account
)来实现,在这里内部类是private
的,不能由外部进行访问,只能通过一个接口(ICount
)来访问。
例NestedBankAccount.cs
通过嵌套类来实现Factory模式的银行账号:
using System;
using System.Collections;
public interface IAccount // 定义接口
{
long Number {
get; }
decimal Balance {
get; }
void Deposit(decimal amount);
void Withdraw(decimal amount);
}
public class Bank
{
public IAccount OpenAccount() {
IAccount acc = new Account();
accounts[acc.Number] = acc;
return acc;
}
private readonly Hashtable accounts = new Hashtable();
private sealed class Account : IAccount
{
public long Number => number;
public decimal Balance => balance;
public void Deposit(decimal amount) {
balance += amount;
}
public void Withdraw(decimal amount) {
balance -= amount;
}
private decimal balance = 0; // decimal 是高精度浮点类型
private static long nextNumber = 123;
private readonly long number = nextNumber++;
}
}
class Test
{
static void Main() {
Bank bank = new Bank();
IAccount account = bank.OpenAccount();
account.Deposit(100.00M);
account.Withdraw(40.00M);
Console.WriteLine("Account{0}has ${1}", account.Number, account.Balance);
}
}