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();
}
}
}
查看全文
相关阅读:
关于tomcat启动时报错Address already in use: JVM_Bind
matlab学习笔记第四章——统计和MATLAB编程介绍
matlab学习笔记第三章——绘图与图形
matlab学习笔记第二章——矩阵
matlab学习笔记第一章
机器学习 什么是监督学习和无监督学习
matlab M文件和面向对象编程
matlab 字符串、元胞和构架数组
使用VMware搭建3台一模一样的Linux虚拟机 搭建hadoop集群环境
Hadoop之单机模式环境搭建
原文地址:https://www.cnblogs.com/rockniu/p/1224440.html
最新文章
String入门看这一篇足矣
多线程解决同步问题浅析
mybatis启动报错
java 读取Properties工具类
java后台处理APP表情
js两个list根据key合并
Java获取date格式的参数
Java 接口
Java 抽象
Java 重写
热门文章
Java 继承
Java中char,short,int,long占几个字节和多少位
oracle物化视图
JSON JAVA 总结
关于Java中的报错问题
jsp页面代码的加载顺序
关于FileUtils中的各种方法及报错处理
关于数据库查询时报“query block has incorrect number of result columns”
关于用Oracle SQL Developer连接数据库的问题
关于引入layui插件后layer is not defined问题
Copyright © 2011-2022 走看看