编写一个程序,使用23种设计模式中的模板方法模式,完成能够计算三科平均成绩以及智育成绩的程序

简介: 编写一个程序,使用23种设计模式中的模板方法模式,完成能够计算三科平均成绩以及智育成绩的程序

 

🏔题目:

Lisa正在编写一个能够计算三科——数学、英语、程序设计基础——平均成绩(平均成绩=三科总成绩/3)和智育成绩(智育成绩=三科总成绩*0.7)的程序。

由于两个成绩的获得都要先计算总成绩,因此她考虑使用23种设计模式中的模板方法模式完成。模板方法模式——定义一个操作方法中的算法的“骨架”,

而将一些步骤延迟到子类中。它通过把不变行为搬移到父类,去除子类中的重复代码来体现程序的优势。

为此,Lisa设计了一个抽象类和三个非抽象类:

  1. 抽象类——AbstractComputer.java

  2. 计算平均成绩的类——ComputerAverage.java

  3. 计算智育成绩的类——ComputerIntel.java

  4. 测试类——Test.java

🐒1AbstractComputer.java

表示两种计算的“骨架”,组成内容如下:

(1)、total:成员变量,double型,表示总成绩

(2)、public abstract double computer( ):表示计算平均成绩或智育成绩

(3)、public double templateComputer(double math,double english,double program):计算数学、英语、程序设计基础三科总成绩,为total赋值,并调用computer( )方法获得平均成绩或智育成绩

package seven_topic;
abstract class AbstractComputer {
    double total;
    public abstract double computer();
    public double templateComputer(double math, double english, double program) {
        total = math + english + program;
        return computer();
    }
}

🐒2.ComputerAverage.java

AbstractComputer类的非抽象子类,用于计算平均成绩,组成内容如下:

public double computer( ):重写的computer( )方法,计算total的平均值

class ComputerAverage extends AbstractComputer {
    public double computer() {
        return total / 3;
    }
}

🐒3.ComputerIntel.java

AbstractComputer类的非抽象子类,用于计算智育成绩,组成内容如下:

public double computer( ):重写的computer( )方法,计算total折合的智育成绩

class ComputerIntel extends AbstractComputer {
     public double computer() {
        return total * 0.7;
     }
 }

🐒4.Test.java

在Test类中通过键盘输入三科成绩,如89,97.5,95,分别创建AbstractComputer类的上转型对象average和intel,

计算这三科成绩的平均成绩和智育成绩,并将结果输出。

import java.util.*;
public class Test {
    public static void main(String[] args) {
        System.out.println("请分别输入三科成绩:");
        @SuppressWarnings("resource")
        Scanner input = new Scanner(System.in);
        double math = input.nextDouble();
        double english = input.nextDouble();
        double program = input.nextDouble();
        AbstractComputer computerAverage = new ComputerAverage();
        System.out.println("三科平均成绩为:");
        System.out.println(computerAverage.templateComputer(math, english, program));
        AbstractComputer computerIntel = new ComputerIntel();
        System.out.println("三科的智育成绩为:");
        System.out.println(computerIntel.templateComputer(math, english, program));
    }
}

以上就是此次作业的全部内容了!

相关文章
|
6月前
|
设计模式 前端开发 数据库
深入理解MVC设计模式:构建高效Web应用程序的基石
【7月更文挑战第4天】在软件工程领域,设计模式是解决常见问题的一系列经过验证的方法。其中,Model-View-Controller(MVC)设计模式自诞生以来,便成为了构建用户界面,特别是Web应用程序的黄金标准。MVC通过将应用程序逻辑分离为三个核心组件,提高了代码的可维护性、可扩展性和重用性。本文将深入探讨MVC设计模式的原理,并通过一个简单的代码示例展示其应用。
245 0
|
4月前
|
设计模式 算法 PHP
PHP中的设计模式:策略模式的深入探索与实践在软件开发的广袤天地中,PHP以其独特的魅力和强大的功能,成为无数开发者手中的得力工具。而在这条充满挑战与机遇的征途上,设计模式犹如一盏明灯,指引着我们穿越代码的迷雾,编写出更加高效、灵活且易于维护的程序。今天,就让我们聚焦于设计模式中的璀璨明珠——策略模式,深入探讨其在PHP中的实现方法及其实际应用价值。
策略模式,这一设计模式的核心在于它为软件设计带来了一种全新的视角和方法。它允许我们在运行时根据不同情况选择最适合的解决方案,从而极大地提高了程序的灵活性和可扩展性。在PHP这门广泛应用的编程语言中,策略模式同样大放异彩,为开发者们提供了丰富的创作空间。本文将从策略模式的基本概念入手,逐步深入到PHP中的实现细节,并通过一个具体的实例来展示其在实际项目中的应用效果。我们还将探讨策略模式的优势以及在实际应用中可能遇到的挑战和解决方案,为PHP开发者提供一份宝贵的参考。
|
4月前
|
设计模式 算法 Java
Java设计模式-模板方法模式(14)
Java设计模式-模板方法模式(14)
|
4月前
|
设计模式 存储 算法
PHP中的设计模式:策略模式的深入解析与应用在软件开发的浩瀚海洋中,PHP以其独特的魅力和强大的功能吸引了无数开发者。作为一门历史悠久且广泛应用的编程语言,PHP不仅拥有丰富的内置函数和扩展库,还支持面向对象编程(OOP),为开发者提供了灵活而强大的工具集。在PHP的众多特性中,设计模式的应用尤为引人注目,它们如同精雕细琢的宝石,镶嵌在代码的肌理之中,让程序更加优雅、高效且易于维护。今天,我们就来深入探讨PHP中使用频率颇高的一种设计模式——策略模式。
本文旨在深入探讨PHP中的策略模式,从定义到实现,再到应用场景,全面剖析其在PHP编程中的应用价值。策略模式作为一种行为型设计模式,允许在运行时根据不同情况选择不同的算法或行为,极大地提高了代码的灵活性和可维护性。通过实例分析,本文将展示如何在PHP项目中有效利用策略模式来解决实际问题,并提升代码质量。
|
6月前
|
设计模式 JavaScript 算法
js设计模式【详解】—— 模板方法模式
js设计模式【详解】—— 模板方法模式
53 6
|
7月前
|
设计模式 Java API
程序技术好文:设计模式:装饰者模式
程序技术好文:设计模式:装饰者模式
31 0
|
7月前
|
设计模式 算法 索引
程序技术好文:设计模式之美:Builder(生成器)
程序技术好文:设计模式之美:Builder(生成器)
|
7月前
|
设计模式 算法 关系型数据库
设计模式第七讲-外观模式、适配器模式、模板方法模式详解
系统要求所有的数据库帮助类必须实现ISqlHelp接口,面向该接口编程,如SQLServerHelp类。 此时第三方提供了一个新的MySql的帮助类(假设是dll,不能修改),它的编程规范和ISqlHelp不兼容,这个时候就需要引入适配器类,使二者能相互兼容。
184 0
|
8月前
|
设计模式 算法 Java
Java 设计模式:深入模板方法模式的原理与应用
【4月更文挑战第27天】模板方法模式是一种行为设计模式,主要用于定义一个操作中的算法的框架,允许子类在不改变算法结构的情况下重定义算法的某些特定步骤。
76 1
|
8月前
|
设计模式 Go
[设计模式 Go实现] 行为型~模板方法模式
[设计模式 Go实现] 行为型~模板方法模式