zoukankan
html css js c++ java
设计模式 单件 & 原型
Design Pattern - Singleton & Prototype
实现了单件模式的的Client, 它自身只有一个示例, 用Instance()方法得到惟一的实例
public
class
Client
{
static
private
Hashtable ht
=
new
Hashtable();
static
protected
Client c
=
null
;
protected
Client()
{
}
public
static
Client Instance()
{
if
(c
==
null
)
c
=
new
Client();
return
c;
}
public
void
Register(String name, CloneHuman ch)
{
ht.Add(name, ch);
}
public
CloneHuman BuildCloneHuman(String name)
{
CloneHuman ch
=
(CloneHuman)ht[name];
return
ch.CreateClone();
}
}
克隆人的类, 以及分别它的子类克隆的男人和女人
public
class
CloneHuman
{
public
virtual
CloneHuman CreateClone()
{
return
null
;
}
public
void
Show()
{
String s
=
this
.GetType().ToString();
Console.WriteLine(s.Substring(s.LastIndexOf(
"
.
"
)
+
1
));
}
}
public
class
CloneMale : CloneHuman
{
public
override
CloneHuman CreateClone()
{
return
(CloneHuman)
this
.MemberwiseClone();
}
}
public
class
CloneFemale : CloneHuman
{
public
override
CloneHuman CreateClone()
{
return
(CloneHuman)
this
.MemberwiseClone();
}
}
测试程序
public
static
void
Main()
{
Client c
=
Client.Instance();
CloneMale cm
=
new
CloneMale();
CloneFemale cf
=
new
CloneFemale();
c.Register(
"
CloneMale
"
, cm);
c.Register(
"
CloneFemale
"
, cf);
for
(Int32 i
=
0
; i
<
10
; i
++
)
{
String name
=
(i
%
2
==
0
)
?
"
CloneMale
"
:
"
CloneFemale
"
;
CloneHuman ch
=
c.BuildCloneHuman(name);
ch.Show();
}
Console.ReadLine();
}
Prototype Demo
查看全文
相关阅读:
[开荒啦]ECS服务器初体验
[邻接矩阵形式]无向图的建立与深度,广度遍历
[Java 学习笔记] 泛型
2021辽宁省大学生程序设计竞赛 C D E F G I L
[DOJ 练习] (取余优化) 判断一个字符串不区分大小写是否回文
[Acwing Linux基础课] Docker基本操作
[图解] 数组模拟Trie树
http://bbs.windows7en.com/thread3102611.html win7
简单介绍Linux下安装Tomcat的步骤
linux下导入导出MySQL数据库
原文地址:https://www.cnblogs.com/Dabay/p/364762.html
最新文章
解决Windows无法加载中文(中国)王码五笔输入法(任何输入法都行) 键盘的布局的方法
传奇
[Fatal Error] Could not create output file '...文件夹\Project1.exe'
学习 TTreeView TTreeNode 类的常用属性与 TTreeView 类的 OnChange 事件
传奇(续)
存储容量:1TB等于多少GB?1PB等于多少TB?1EB等于多少PB?
Delphi学习笔记(精华二)
MessageBox用法
【转】从K近邻算法、距离度量谈到KD树、SIFT+BBF算法
windows下gVim(Vi/vim)基本使用:让你体会到什么才是真正的编辑利器
热门文章
【转】SSE4.1指令集系列之一
【转】巧用MapReduce+HDFS,海量数据去重的五大策略
编辑利器——VIM for windows /文本文件编辑器
人脸识别概述
【转】浅谈流形学习
【转】抛物线筛选质数的方法——visual sieve
【转】计算文档相似度(英文)
【转】linux进程间通信总结
[Java ] 有关LinkedList<T> contains方法的疑惑和对源码的分析
★★★[并查集变形] AcWing 240. 食物链 题解
Copyright © 2011-2022 走看看