zoukankan
html css js c++ java
Head First设计模式学习笔记:工厂方法
.NET FCL中工厂方法的实例:枚举器
IEnumerable
是工厂原型
IEnumerator是产品原型
List, ArrayList这些类都是建立产品的具体类,都实现了
IEnumerable
接口,有一个GetEnumerator()的方法返回IEnumerator
实现一个简单的工厂方法
using
System;
using
System.Collections.Generic;
using
System.Linq;
using
System.Text;
using
System.Collections;
namespace
DesignPattern.FactoryMethod
{
//
工厂原型
interface
IFactory
{
//
建立产品的方法(这就是工厂方法?)
IProduct CreateProduct();
}
//
产品原型
interface
IProduct
{
string
ProductName
{
set
;
get
; }
int
GetQty();
}
//
具体工厂1
class
Factory1 : IFactory
{
IFactory Members
#region
IFactory Members
public
IProduct CreateProduct()
{
return
new
Product1()
{ ProductName
=
"
My Product 1
"
}
;
}
#endregion
}
//
具体产品1
class
Product1 : IProduct
{
IProduct Members
#region
IProduct Members
string
_productName;
public
string
ProductName
{
get
{
return
_productName;
}
set
{
_productName
=
value;
}
}
public
int
GetQty()
{
return
_productName.Length;
}
#endregion
public
override
string
ToString()
{
return
string
.Format(
"
<Product 1>|ProductName={0}, GetQty={1}
"
, ProductName, GetQty());
}
}
//
具体工厂2
class
Factory2 : IFactory
{
IFactory Members
#region
IFactory Members
public
IProduct CreateProduct()
{
return
new
Product2()
{ ProductName
=
"
My Inner Product 2
"
}
;
}
#endregion
//
具体产品2
public
class
Product2 : IProduct
{
IProduct Members
#region
IProduct Members
string
_productName;
public
string
ProductName
{
get
{
return
_productName;
}
set
{
_productName
=
value;
}
}
public
int
GetQty()
{
return
_productName.Length
*
2
;
}
#endregion
public
override
string
ToString()
{
return
string
.Format(
"
<Product 2>|ProductName={0}, GetQty={1}
"
, ProductName, GetQty());
}
}
}
class
Program
{
static
void
Main(
string
[] args)
{
IFactory factory
=
new
Factory1();
IProduct product
=
factory.CreateProduct();
Console.WriteLine(product);
factory
=
new
Factory2();
product
=
factory.CreateProduct();
Console.WriteLine(product);
Console.ReadLine();
}
}
}
查看全文
相关阅读:
装饰器
异常处理与断言
例子:对象构造函数指定类型传入参数(描述符与装饰器的应用)
Python的描述符
全新开始fighting
函数相关知识
集合的介绍以及简单方法
列表,元组,字典类的常见简单方法
Python简单字符串函数介绍
聚合函数及分组查询及F&Q
原文地址:https://www.cnblogs.com/rockniu/p/1224440.html
最新文章
.Net 的 RestFul Service
.Net使用RabbitMQ详解
前端工程师必备:学习资源全网罗
【基础进阶】URL详解与URL编码
前端各种面试题
ASP.NET-自定义HttpModule与HttpHandler
ASP.NET是如何在IIS下工作的
整理下.net分布式系统架构的思路
hibernate映射---组件映射
CASCADE属性的取值
热门文章
JavaScript_1___简单页面倒计时跳转
守护进程,互斥锁,消费者与生产者
并发编程之多进程
UDP协议
粘包问题的产生,解决
网络通讯协议 C/S框架
多态,鸭子类型,反射
封装
继承
面向对象编程、类
Copyright © 2011-2022 走看看