大胖的部落格
Just a note
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks
<
2009年7月
>
日
一
二
三
四
五
六
28
29
30
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
1
2
3
4
5
6
7
8
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
Algorithm(13)
(rss)
C#(13)
(rss)
C++(22)
(rss)
Design Pattern(23)
(rss)
Others(14)
(rss)
STL(9)
(rss)
Technical(2)
(rss)
UML(2)
(rss)
Win32(18)
(rss)
Reference
Windows XP command line
最新评论
1. re: 在TCL命令行中调用C函数
@Kenny
实在不好意思,时间太过久远,本人已好久没有接触TCL……
--大胖
2. re: 在TCL命令行中调用C函数
請問如何溝通array 變數
Q:1
tcl array in C
Q:2
C array in tcl
懇求指導
--Kenny
3. re: 在TCL命令行中调用C函数
谢谢!
--1232
Flyweight
对同样内容的对象,只创建一份。
需要显示对象时,若对象存在,则返回已存在对象的地址;若不存在,则创建对象再返回。
#include
<
iostream
>
#include
<
string
>
#include
<
list
>
using
namespace
std;
//
封装了string
class
Flyweight
{
public
:
Flyweight(
string
s):str(s)
{}
string
GetStr()
{
return
str;}
void
Print()
const
{cout
<<
str
<<
endl;}
private
:
string
str;
}
;
//
提供了返回flyweight的接口
class
FlyweightFactory
{
public
:
~
FlyweightFactory()
{
list
<
Flyweight
*>
::iterator it;
for
(it
=
lf.begin(); it
!=
lf.end(); it
++
)
{
delete (
*
it);
}
}
//
若不存在则新建,若存在则返回存在的元素
const
Flyweight
*
GetFlyweight(
const
string
&
s)
{
list
<
Flyweight
*>
::iterator it;
for
(it
=
lf.begin(); it
!=
lf.end(); it
++
)
{
if
((
*
it)
->
GetStr()
==
s
+
"
_fly
"
)
{
cout
<<
"
exist:
"
;
return
*
it;
}
}
Flyweight
*
p
=
new
Flyweight(s
+
"
_fly
"
);
lf.push_back(p);
cout
<<
"
new:
"
;
return
p;
}
private
:
list
<
Flyweight
*>
lf;
}
;
int
main()
{
FlyweightFactory
*
p
=
new
FlyweightFactory;
p
->
GetFlyweight(
"
hello
"
)
->
Print();
p
->
GetFlyweight(
"
hello
"
)
->
Print();
p
->
GetFlyweight(
"
hello
"
)
->
Print();
p
->
GetFlyweight(
"
dog
"
)
->
Print();
p
->
GetFlyweight(
"
dog
"
)
->
Print();
p
->
GetFlyweight(
"
hello
"
)
->
Print();
delete p;
return
0
;
}
posted on 2009-06-09 16:55
大胖
阅读(113)
评论(0)
编辑
收藏
引用
所属分类:
Design Pattern
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
常用设计模式
State
Visitor
Template Method
Observer
Memento
Mediator
Iterator
Command
Chain of Responsibility
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 大胖