ネストされたタイプのアプリケーション-ファクトリモード(ファクトリモード)。いわゆるファクトリーモデルとは、ある「製品」を生産できる「工場」を指し、製品は工場でしか生産できない。たとえば、銀行口座(Account
)は銀行(Bank
)によってのみ生成できます。C#では、アカウントBank
は内部クラス(Account
)によって実装できます。内部クラスはyesprivate
であり、外部からアクセスすることはできず、インターフェイス(ICount
)を介してのみアクセスできます。ネストされたクラスを介してファクトリモードの銀行口座を実現する
例NestedBankAccount.cs
:
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);
}
}