学习设计模式基础的心得与代码(二)
来源:互联网 发布:电脑设计房子软件 编辑:程序博客网 时间:2024/05/18 11:05
(四)适配器模式。
主要是为了统一接口,处理接口不匹配的问题。使函数在调用时简单,将某个类的接口转换成另一个客户期待的接口,实现了接口不匹配的类间通信,实现了软件的复用。
(1)对象适配:
类图:
适配
代码:
class Adaptee{
public:
void Adaptee(){
//方法实现
}
};
class Adapter{
public:
void prol();
//声明在对象调用。
};
(2)指针实现:
类图:
代码:
class Adapte Base{
public:
virtual void mythind()=0;
virtual~Base(){
cout<<"Base.des"<<endl;
}
};
class AdapteA:public Base{
public:
void mythind(){
cout<<"adaptA()"<<endl;
}
~adaptA(){
cout<<"adaptA.des"<<endl;
}
};
class Adaptee{
public:
void mythind(int i){
cout<<"adapter.d"<<endl;
cout<<i<<endl;
}
~adapter(){
cout<<"adapter.des"<<endl;
}
};
class AdapteB:public Base{
private:
adapter *p;
public:
adaptB(adapter *t=NULL){
p=t;
}
void mythind(){
int t;
cin>>t;
p->mythind(t);
}
~adaptB(){
cout<<"adapteB.des"<<endl;
delete p;
p=NULL;
}
};
//类C与类A一样,在此省略。
(五)组合模式。
实现了一个树状结构,类似于文件夹的访问创建。
类图:
*多个File和Folder的对象组合至Folder中,形成一个树状结构。
class AbstractFile{
private:string name;
public:
AbstractFile(string t){
name=t;
}
AbstractFile(){
name="未命名文件";
}
virtual void out(){
cout<<name<<" ";
}
virtual void deletes()=0;
virtual ~ AbstractFile(){
cout<<"AbstractFile.des"<<endl;
}
};
class File:public AbstractFile{
public:
File(){}
File(string t):AbstractFile(t){}
void out(){
AbstractFile::out();
}
void deletes(){
}
~File(){
cout<<"File.des"<<endl;
}
};
class Folder:public AbstractFile{
private:
vector<AbstractFile*>vec;
public:
Folder(){}
Folder(string t):AbstractFile(t){}
void Add(AbstractFile*t){
vec.push_back(t);
}
void out(){
AbstractFile::out();
cout<<endl;
vector<AbstractFile*>::iterator i;
for(i=vec.begin();i!=vec.end();i++){
(*i)->out();
}
}
void deletes(){
vector<AbstractFile*>::iterator i;
for(i=vec.begin();i!=vec.end();i++){
(*i)->deletes();
delete (*i);
}
}
~Folder(){
cout<<"Filder.des"<<endl;
}
};
- 学习设计模式基础的心得与代码(二)
- 学习设计模式基础的心得与代码(一)
- 学习设计模式心得与代码(三)
- 设计模式心得(二) 策略模式
- 菜鸟学习设计模式的心得
- 学习设计模式的一点心得
- 设计模式的学习(二)
- 设计模式学习(二)
- 设计模式学习(二)
- 设计模式学习(二)
- 设计模式(二) 工厂模式的学习和使用
- 设计模式学习笔记(二):模式、设计与复杂性
- 设计模式学习(二)适配器模式
- 设计模式学习(二)适配器模式
- [Android基础系列]设计模式(二)
- 基础笔记(二):设计模式摘录
- 我与大话设计模式之代码篇(二)----工厂方法模式
- 对“视觉机器学习20讲配套仿真代码”的研究心得---Adaboost(二)
- Linux CentOS 6.4 中安装JDK
- Android框架之路——FloatingActionButton使用与ToolBar进阶
- MyBatis,MySql存储过程分页查询
- EL表达式中的比较
- 关于yield return的使用
- 学习设计模式基础的心得与代码(二)
- pij 1179 Polygon
- 神级代码编辑器 Sublime Text 全程指南
- jason的简单的应用
- 如何才能用微信进行英语课程的预约
- ubuntu 14.04安装cuda8.0
- 视图解析器InternalResourceViewResolver的使用 (3)
- 面向对象之职工信息类
- 技术转型产品学习笔记与理解[PRD]简述——第五天