首页 > 其他分享 >软件设计实验11:装饰模式

软件设计实验11:装饰模式

时间:2023-11-13 09:26:11浏览次数:32  
标签:11 phone 软件设计 System public Phone println 装饰 out

实验11:装饰模式

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

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

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

 

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

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

实验要求:

1. 提交类图;

 

 

 

2.提交源代码;

public class Client {

 

    public static void main(String[]args) {

        Phone p=new SimplePhone();

        p.call();

        System.out.println("Simple");

        JarPhone p1=new JarPhone(p);

        p1.shoke();

        System.out.println("JarPhone");

        ComplexPhone p2=new ComplexPhone(p1);

        p2.light();

        System.out.println("ComplexPhone");

    }

 

}

package Decorative_pattern;

 

public class ComplexPhone extends UpgradePhone{

    public ComplexPhone(Phone phone){

        super(phone);

        System.out.println("***增加闪光功能***");

    }

    public void light(){

        System.out.println("灯光闪烁:咔嚓");

    }

}

package Decorative_pattern;

 

public class JarPhone extends UpgradePhone{

    public JarPhone(Phone phone){

        super(phone);

        System.out.println("***增加振动的功能***");

    }

    public void shoke(){

        System.out.println("振动:嗡嗡嗡");

    }

}

package Decorative_pattern;

 

public class SimplePhone implements Phone{

    public SimplePhone(){

        System.out.println("手机收到来电");

    }

    public void call(){

        System.out.println("主人来电话啦!");

    }

}

package Decorative_pattern;

 

public class UpgradePhone implements Phone{

    private Phone phone;

    public UpgradePhone(Phone a){

        phone=a;

    }

    public void call(){

        phone.call();

    }

}

package Decorative_pattern;

 

public interface Phone {

    public void call();

 

 

}

 

3.注意编程规范。

 

 

标签:11,phone,软件设计,System,public,Phone,println,装饰,out
From: https://www.cnblogs.com/DREAM2021/p/17828431.html

相关文章

  • 11.13每日总结
    今天早上进行了软件设计模式的上机实验[实验任务一]:计算机开启在计算机主机(Mainframe)中,只需要按下主机的开机按钮(on()),即可调用其他硬件设备和软件的启动方法,如内存(Memory)的自检(check())、CPU的运行(run())、硬盘(HardDisk)的读取(read())、操作系统(OS)的载入(load()),如......
  • 11.13(2)
    软件设计                 石家庄铁道大学信息学院 实验13:享元模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解享元模式的动机,掌握该模式的结构;2、能够利用享元模式解决实际问题。 [实验任务一]:围棋设计一个围棋软件,在系统中只存......
  • Windows11安装运行Linux
    学习Linux,为了省钱不想买一台云服务器,或者不想装VMware虚拟机,win11可以通过这种方式安装Linux(Ubuntu)一、开启Windows功能1.在window11的搜索框内,搜索"Windows功能",出现了“启用或关闭Windows功能”,点击打开。2.勾选"适用于Linux的Windows子系统",“虚拟机平台”,“Windows虚拟机......
  • ARC119F 题解
    前言ARC119F好厉害,是没见过的自动机DP。正文[1]分析主要分析一下为什么这么写。[2]状态设计[3]自动机状态转移感觉状态设计中最难的就是如何处理带\(O\)的。见参考资料。[4]代码还没写。写ing这是自动机的初始化(有点麻烦)。intto[Kind][2][2]={{{2,0},{8,0......
  • 11月13每日打卡
    实验13:享元模式本次实验属于模仿型实验,通过本次实验学生将掌握以下内容:1、理解享元模式的动机,掌握该模式的结构;2、能够利用享元模式解决实际问题。 [实验任务一]:围棋设计一个围棋软件,在系统中只存在一个白棋对象和一个黑棋对象,但是它们可以在棋盘的不同位置显示多次。实......
  • 2023年11月12日每日随笔
    今天,主要进行了ERP的系统的主要功能的揣摩和学习,对于博欧ERP的网站进行参考,可能我的能力不够吧,对于支出收入,那里面的功能我一点也不理解,我中感觉把题目改成输入输出好,接受外界信息,修改外界信息等等,也在网上找到了许多的参考,对于分摊工资也进行了大概了解,有着具体的思路,但是想找一......
  • 11月6号总结
    今天又是一个新的一周,上周末参加婚礼回家爽了两天还没缓过进来,早上又是一如既往的实训课程,学会了家庭电路的简单排线。下午学习了java的语法知识之后有练习了还是之前的数据结狗连接。还是得继续练习熟能生巧。de ......
  • 11.13~11.19复习
    1.spring全家桶Spring启动流程?springbootSpringBoot启动流程?SpringBoot好处?SpringBoot常用注解2.mysql优化3.jvm详细说一下cms的回收过程详细说一下G1的回收过程GC如何调优 ......
  • LeetCode 第 115 场双周赛
    2899.上一个遍历的整数感觉读题比较困难classSolution{public:vector<int>lastVisitedIntegers(vector<string>&words){vector<int>res,a;for(inti=0,cnt=0,x;i<words.size();i++){if(words[i......
  • 每日总结2023年11月12日
    今天跟着网上小老师的步骤在做一个springboot+vue的项目,但是在配置tomcat端口的时候遇到一个问题,就是在application.yml里面配置的8081端口号并没有生效,如下图 相信不少明眼的小伙伴已经看出我的问题所在了,没错,应该是server而不是service,而且还有一个重要的判断依据就是port:后......