从一个简单程序中感受java语法的规整性

背景:

        在做项目之前,我首先拿了一个小的简单计算器程序作为练手,因为以前的程序我都是在一个文件中完成的,显得很冗大。所以这次分开成不同的java文件,每个文件负责不同的功能,最后再在一个文件中进行汇总

        在汇总的过程中终于感受到了java的博大精深💦💦

这是一个简单的计算器,用户输入两个参数,然后程序给出相应的处理。而且作为练手只有加法减法和乘法,没有除法(细心应该知道为什么)

实现的思路,首先我是对功能进行的一个拆解,将加法等分开去写

但是首先还是一个总的概括方法,即不同的方法只是操作不一样,但是处理的数据是一样的。所以我先写了一个接口作为模版的初始化

package 测试项目1简单的计算器;

import java.util.Scanner;

public interface 功能 {

    class Operation_Integer{ //这是一个结果集,由于要返回多个值,所以使用一个class打包多个结果进行返回

        int left;

        int right;
    }

    default Operation_Integer input(){//这是默认方法,用于接受用户给的两个参数

        System.out.println("请输入两个操作数:");

        Operation_Integer temp = new Operation_Integer();

        //两个参数都放到结果集中
        temp.left = new Scanner(System.in).nextInt();

        temp.right = new Scanner(System.in).nextInt();

        System.out.println("好的,已经得到了数据,准备处理");

        return temp;//将多个参数作为结果集对象同时放回
    }

    public int operation();//笼统的方法形式(用于给后面具体类的实现来自由发挥)
}

在这个接口中:因为每次都是提示用户输入两个数据,所以这个时候就把这个操作放到接口中的默认方法去,而且其中有个巧妙的地方就是:java中不好一次性返回多个值,索性就创建一个结果集的class对象,将不同的值打包到这个对象中然后返回这个对象就行了(这里的left和right属性就是不同的值)

这样以来就得到了用户的输入

然后才是模版方法:operation,从这个模版方法中可以延伸出不同的实现类,去完成一个多态

下面拿一个加法模块作为一个例子:

package 测试项目1简单的计算器;

public class 加法 implements 功能{

    public int operation(){

        Operation_Integer temp; //可以先不用初始化这个对象!!(IDEA牛逼!!!)

        temp = input();//哈哈哈!!真的牛逼!!可以将接口中的默认方法直接放到实现类中进行使用
        //这样就得到了用户的输入

        int ret = temp.left + temp.right;//得到输入以后就能正常进行操作了!!

        return ret;//将得到的最终的结果返回
    }
}

注意这里的模版方法没有放置参数,这里是直接在这个放里面调用之前的input方法,这样可以使得代码更加简洁,就不用在参数列表中设置一大堆的东西了

可以看到interface的默认方法确实很好用啊!直接在实现类中进行调用就行了,可以看到这里的实现过程真的很简洁!!java牛逼!!

然后你就可以任意扩展你的功能了,从接口中继续延伸出: 减法,乘法,等更多方法。

但是再多的方法也只是在两个操作数上进行的,不过从这里已经可以看出java语法的有机生长性质了,而且代码的复用性也体现出来了!

package 测试项目1简单的计算器;

import java.rmi.server.UnicastRemoteObject;
import java.util.Scanner;

public class 简单计算器 {

    static public void print(int ret){

        System.out.println("结果为 : " + ret);//由于每个操作完成以后都要给用户显示结果
        //索性写一个static方法来print 这个 ret,减少代码的冗杂程度
    }

    public static void main(String[] args) {

        int ret = 0; //这个变量用于存放结果

        while(true){

            System.out.println("请输入操作:add,minus,product,quit");

            String input = new Scanner(System.in).nextLine();

            switch (input){

                case "add" :

                    ret = new 加法().operation();//调用方法

                    print(ret); //输出这个结果

                    break;

                case "minus" :

                    ret = new 减法().operation();

                    print(ret);

                    break;

                case "product" :

                    ret = new 乘法().operation();

                    print(ret);

                    break;

                case "quit" :

                    System.out.println("好的,这个系统马上就关闭了");

                    System.exit(0);

                    break;

                default:

                    System.out.println("请输入正确的指令");

                    break;
            }
        }
    }
}

/*
    holy shit,好像终于领悟到了一点java的精髓终于感受到了java语法的规整性

    这个计算器确实很简单,只能计算两个数之间的运算,但是还不包括除法,但是这简单之中其实有java的精髓在里面

    这里使用接口让结构变得清晰,在接口中添加默认方法以便于每个实现都能获取到两个操作数,而不是分别在每一个功能中添加这个操作
    在实现中使用接口的默认方法的方式和c语言中一样,直接写函数名加上括号进行调用就行了

    而且这里可以处理地更加灵活一点,通常不好返回多个值,但是这里可以写一个结果集的class,将多个值放到这个class对象中一起返回出来
    然后返回出来的值还可以给实现类的方法进行使用,这样形成一条完整的程序链!我真的感觉有简洁的优雅在里面!!

    总体来说这应该是一个以小见大,在一个很简单的程序中窥到java的语法之美

 */

最后是将功能进行了一个汇总,得到了一个完整的简单计算器,每个部分都很清晰,这样就便于后期的维护和调整了,如果还是想以前那样将所有功能都放到一个文件中进行,那样的话代码看起来是很多很麻烦的,不好维护和更新。

但是现在java给了我们更多可能不是吗

以后的项目都可以从这思路进行扩展,可以说确实以小见大了

java yyds!!!!!!!!!!!!!!!!!!!!!!!!💦💦!

:P

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值