大胖的部落格
Just a note
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks
<
2009年6月
>
日
一
二
三
四
五
六
31
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
1
2
3
4
5
6
7
8
9
10
11
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
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
Bridge
将抽象与实现分离,对实现部分的修改,不会影响抽象部分的代码。
也可以将抽象和实现理解成为两个不同维度。
例如:Software有Game和Ofiice两种,每种软件又需要在Win和Unix两种操作系统上有不同的实现,
那么可能的结构是Game和Office从Software派生;Game和Office又分别派生出WinGame,UnixGame和WinOffice,UnixOffice。
以后如果多出一个系统,每个Software的派生类又需要多出一个针对新操作系统的子类实现。
如果采用bridge模式,可按如下示例组织结构。
将针对系统的实现分离出来,Software只含有实现基类的指针。这样实现部分的扩展不会影响Software部分的代码。并且对Software部分而言,也隐藏了实现的细节。
#include
<
iostream
>
using
namespace
std;
//
实现部分的抽象基类
class
Implement
{
public
:
//
由派生类完成不同的实现
virtual
void
Operation()
=
0
;
}
;
//
win实现
class
WinImplement:
public
Implement
{
public
:
void
Operation()
{cout
<<
"
WinImplement
"
<<
endl;}
}
;
//
unix实现
class
UnixImplement:
public
Implement
{
public
:
void
Operation()
{cout
<<
"
UnixImplement
"
<<
endl;}
}
;
//
抽象部分的抽象基类
class
Software
{
public
:
void
SetImpl(Implement
*
p)
{pi
=
p;}
virtual
void
Use()
=
0
;
protected
:
//
实现部分
Implement
*
pi;
}
;
//
抽象部分的game派生
class
Game:
public
Software
{
public
:
void
Use()
{
cout
<<
"
Game:
"
;
pi
->
Operation();
}
}
;
//
抽象部分的office派生
class
Office:
public
Software
{
public
:
void
Use()
{
cout
<<
"
Office:
"
;
pi
->
Operation();
}
}
;
int
main()
{
//
创建一个Win实现
Implement
*
pi
=
new
WinImplement;
//
创建一个office实例
Software
*
ps
=
new
Office;
//
将win实现赋给office
ps
->
SetImpl(pi);
//
调用实现
ps
->
Use();
delete ps;
delete pi;
return
0
;
}
posted on 2009-06-09 14:32
大胖
阅读(145)
评论(0)
编辑
收藏
引用
所属分类:
Design Pattern
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
常用设计模式
State
Visitor
Template Method
Observer
Memento
Mediator
Iterator
Command
Chain of Responsibility
网站导航:
博客园
IT新闻
BlogJava
知识库
博问
管理
Powered by:
C++博客
Copyright © 大胖