Java 数学函数 实现加减乘除 代理模式 装饰模式

阅读: 评论:0

Java 数学函数 实现加减乘除 代理模式  装饰模式

Java 数学函数 实现加减乘除 代理模式 装饰模式

完整代码

​interface math {double result(double x);//计算带入具体x的返回结果math set(double x);//不同计算增加的内容}public class project7 {public static void main(String[] args) {// x  当 x = 3System.out.println(new Function().result(3));// x+x  当 x = 4System.out.println(new Function().addition().result(4));// (x+x)*3  当 x = 5System.out.println(new Function().addition().multiplication(3).result(5));}
}//函数
class Function {private math function;double x;public double result(double x) {//带入值计算返回结果this.x = x;sult(x);}//创建函数public Function() {this.function = new Subject();}//传参的位常数 不传参的是自变量//加法public Function addition(double x) {function = new addition(function).set(x);return this;}public Function addition() {function = new addition(function).Add();return this;}//乘法public Function multiplication(double x) {function = new multiplication(function).set(x);return this;}public Function multiplication() {function = new multiplication(function).Add();return this;}//减法public Function subtraction (double x) {function = new subtraction(function).set(x);return this;}public Function subtraction () {function = new subtraction(function).Add();return this;}//除法public Function division(double x) {function = new division(function).set(x);return this;}public Function division() {function = new division(function).Add();return this;}}class Subject implements math {math target,X = null;double x;public Subject() { }public double result(double x) {return x;}public Subject(math target) {this.target = target;}public math set(double x) {this.x = x;return this;}private double R(double x) {sult(x);}//增加新变量public math Add(){X = new Subject();return this;}}class addition extends Subject {public addition(math target) {super(target);}public double result(double x) {sult(x) + ( X == null ? this.x : X.result(x) );}}class subtraction extends Subject {public subtraction(math target) {super(target);}public double result(double x) {sult(x) - ( X == null ? this.x : X.result(x) );}
}class multiplication extends Subject {public multiplication(math target) {super(target);}public double result(double x) {sult(x) * ( X == null ? this.x : X.result(x) );}
}class division extends Subject {public division(math target) {super(target);}public double result(double x) {sult(x) / ( X == null ? this.x : X.result(x) );}
}​

解释

math 抽象组件

Subject 抽象装饰类 (真实角色)

成员变量target是一定存在的,X是后添加的函数可有可无

具体装饰类

加减乘除为具体的装饰类
X == null ? this.x : X.result(x)

这个意思是判断有没有增加自变量,如果add的是自变量就让参数和X关联
如果添加的不是自变量add的就是常数,跟参数无关

Function 代理角色

具体函数
有点小毛病就是不能实现类似于

6 x 3 x + 2 frac{6x}{3x+2} 3x+26x​

上下都是函数的

需要建立两个分子代理和分母代理才能间接实现

本文发布于:2024-01-29 19:00:52,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170652605617586.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:模式   加减乘除   函数   数学   Java
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23