装饰模式

软件设计                  石家庄铁道大学信息学院

 

实验11:装饰模式

本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:

1、理解装饰模式的动机,掌握该模式的结构;

2、能够利用装饰模式解决实际问题。

 
   

 

 

[实验任务一]:手机功能的升级

用装饰模式模拟手机功能的升级过程:简单的手机(SimplePhone)在接收来电时,会发出声音提醒主人;而JarPhone除了声音还能振动;更高级的手机(ComplexPhone)除了声音、振动外,还有灯光闪烁提示。

实验要求:

1.     提交类图;

 

 

 

2.     提交源代码;

#include <iostream>
using namespace std;

class Phone
{
public:
    virtual void receiveCall(){};
};

class SimplePhone:public Phone
{
public:
    virtual void receiveCall(){
        cout<<"声音提示"<<endl;
    }
};


class PhoneDecorator:public Phone {
protected:
    Phone *phone;

public:
    PhoneDecorator(Phone *p)
    {
        phone=p;
    }
    virtual void receiveCall()
    {
        phone->receiveCall();
    }
};


class JarPhone:public PhoneDecorator{
public:
    JarPhone(Phone *p):PhoneDecorator(p){}
    void receiveCall()
    {
        phone->receiveCall();
        cout<<"震动提示"<<endl;
    }
};

class ComplexPhone:public PhoneDecorator{
public:
    ComplexPhone(Phone *p):PhoneDecorator(p){}
    void receiveCall()
    {
        phone->receiveCall();
        cout<<"灯光闪烁提示"<<endl;
    }
};

int main()
{
    Phone *p1=new SimplePhone();
    p1->receiveCall();
    cout<<endl;
    Phone *p2=new JarPhone(p1);
    p2->receiveCall();
    cout<<endl;
    Phone *p3=new ComplexPhone(p2);
    p3->receiveCall();
    return 0;
}

 

 

 

 

 

 

 

3.注意编程规范。

 

 

posted @ 2021-11-01 15:31  我试试这个昵称好使不  阅读(109)  评论(0编辑  收藏  举报