C#スタディノートファクトリモード

ネストされたタイプのアプリケーション-ファクトリモード(ファクトリモード)。いわゆるファクトリーモデルとは、ある「製品」を生産できる「工場」を指し、製品は工場でしか生産できない。たとえば、銀行口座(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);
	}
}

おすすめ

転載: blog.csdn.net/qq_45349225/article/details/114152867