學習之前,先喊一下口號:每天進步一點,生活更好一點
首先聲明一點,我也是新新新手一枚,嶄新的新哦。如果文章有不合理的地方,也請各位博友多多指點,不要亂噴哦
我的文采很低調,低調到語文老師對我的期望是你什么時候能及格啊!!!▄█▀█●給跪了@@@ 所以我的文章都是直奔主題,沒有華麗的裝飾,沒准可以美而言之『通俗易懂』呢ヾ(=゚・゚=)ノ喵♪
好了,可以開始了
我們聲明兩個類 Customer 和 Order
public class Customer { public string CustomerID { get; set; } public string CompanyName { get; set; } public string ContactName { get; set; } public string ContactTitle { get; set; } }
public class Order { public int OrderID { get; set; } public string CustomerID { get; set; } public int? EmployeeId { get; set; } public DateTime? OrderDate { get; set; } }
如果是剛開始學習編程,如果要對這兩個類進行操作,就需要建立兩個操作類 CustomerOperation 和 OrderOperation
public class CustomerOperation { public void Creat(Customer item) { } public void Delete(Customer item) { } public IEnumerable<Customer> Get() { } public void Update(Customer item) { } }
public class OrderOperation { public void Creat(Order item) { } public void Delete(Order item) { } public IEnumerable<Order> Get() { } public void Update(Order item) { } }
好了,關於兩個類的CRUD(增查改刪)就寫好了,下面我們就可以使用了
static void Main(string[] args) { CustomerOperation customer = new CustomerOperation(); OrderOperation order = new OrderOperation(); customer.Get(); order.Get(); Console.ReadLine(); }
這樣一來,我們就new了兩個實例,如果我們有一百個類,豈不是要new一百遍!!o(>﹏<)o
那怎么樣new一個實例,可以同時操作兩個類呢,那還不簡單,我們把兩個操作類,寫到一個里邊
public class Factory { public void CustomerCreat(Customer item) { } public void CustomerDelete(Customer item) { } public IEnumerable<Customer> CustomerGet() { } public void CustomerUpdate(Customer item) { } public void OrderCreat(Order item) { } public void OrderDelete(Order item) { } public IEnumerable<Order> OrderGet() { } public void OrderUpdate(Order item) { } }
這時,我們再使用的時候,不就直接實例化一個就可以了
static void Main(string[] args) { Factory factory = new Factory(); Factory.CustomerGet(); Factory.OrderGet(); Console.ReadLine(); }
果然聰明,這就基本上可以稱作是單一實例模式了
但是,如果將來有一百個類,你的Factory豈不是要爆掉,那怎么辦呢,我已經修煉了第一層功力,我是這樣做的
原來的兩個操作類不變,在Factory里邊進行實例化
public class Factory { private CustomerOperation _customerOperation = null; private OrderOperation _orderOperation = null; public Customer Customers { get { if (_customerOperation == null) { _customerOperation = new CustomerOperation(); } return this._customerOperation; } } public Order Orders { get { if (_orderOperation == null) { _orderOperation = new OrderOperation(); } return this._orderOperation; } } }
然后我們再去使用的時候
static void Main(string[] args) { Factory factory = new Factory(); factory .Orders.Get(); factory .Customers.Get(); Console.ReadLine(); }
這樣操作起來是不是就直觀很多了,代碼量也減少了很多,這就是我理解的單一實例模式