首页 > 编程知识 正文

java多个ifelse优化,java如何实现多态

时间:2023-05-06 15:54:25 阅读:175865 作者:482

场景说明

在开发场景中,经常会遇到折扣的业务需求,每个用户对应的级别不同,折扣情况也不同。 普通会员打9折,青铜会员打8.5折,金牌会员打8折等。 一般开发中最简单的方法是判断用户的等级,根据订单进行折扣处理。

场景示例

写了一个简单的例子。 如下所示。

//1学生2老师3代表校长

int type=1;

if(1==type ) {

System.out.println ('学生笑嘻嘻地说话) );

}elseif(2==type ) )。

System.out.println ('老师愉快地说话) );

} else {

System.out.println ('校长在认真说话);

}

上面的代码是我们经常做的事情。 代码少的时候,看起来非常清晰,但是如果代码多了,或者有更多的判断条件,那上面的代码就会更加混乱。 每次有修改时,都必须更改该部分的代码。

解决方法

可以将上述代码更改为多态性,以创建三个类。 学生Student、老师Teacher、校长HeadMater、父类为Person,这三个类都实现父类的方法say。 如下所示:

Person.class

package me.xueyao.service;

//*

* @author Simon.Xue

* @date 2019-12-01 14:31

*/

公共接口人员{

void say (;

}

Student.class

package me.xueyao.service.impl;

import me.xueyao.service.Person;

importorg.spring framework.stereotype.service;

//*

* @author Simon.Xue

* @date 2019-12-01 14:34

*/

@Service

publicclassstudentimplementsperson {

@Override

公共void say (

System.out.println ('学生笑嘻嘻地说话) );

}

}

Teacher.class

package me.xueyao.service.impl;

import me.xueyao.service.Person;

importorg.spring framework.stereotype.service;

//*

* @author Simon.Xue

* @date 2019-12-01 14:37

*/

@Service

publicclassteacherimplementsperson {

@Override

公共void say (

System.out.println ('老师愉快地说话) );

}

}

HeadMaster.class

package me.xueyao.service.impl;

import me.xueyao.service.Person;

importorg.spring framework.stereotype.service;

//*

* @author Simon.Xue

* @date 2019-12-01 14:41

*/

@Service

publicclassheadmasterimplementsperson {

@Override

公共void say (

System.out.println ('校长在认真说话);

}

}

测试方法

@Test

公共语音测试() {

Person student=new Student (;

student.say (;

Person teacher=new Teacher (;

teacher.say (;

Person headMaster=new HeadMaster (;

headMaster.say (;

}

最优化

上述方法基本上已经完成了优化,但每次都会发现创建对应对象的问题。 上面有三个类,所以要创建三个对象。 你能再优化一次吗?

目前,项目正在使用Sping框架,因此可以通过注入来完成优化。

首先,按如下方式创建person枚举类:

package me.xueyao.enums;

import lombok.allargsconstructor;

import lombok.Getter;

import me.Xue Yao.service.impl.headmaster;

import me.Xue Yao.service.impl.student;

import me.Xue Yao.service.impl.teacher;

//*

* @author Simon.Xue

* @date 2019-12-01 15:55

*/

@AllArgsConstructor

@Getter

公共事件人员事件{

student(1,'学生',Student.class )、

teacher(2,'老师',Teacher.class )、

headmaster(3,'校长',HeadMaster.class;

整数代码;

字符串msg;

Class clazz;

//*

获取类的名称,因为在自动注入Spring时,缺省名称是类名(首字母缩写)

* @param code

* @return

*/

publicstaticstringclassname (集成代码) {

个人价值:价值() ) ) )0)

if(value.getcode ).equals(code ) ) }

stringsimplename=value.getclazz ().getSimpleName );

simplename.substring(1;

return string.value of (simplename.charat (0) ).toLowerCase ) ) simpleName.substring(1) 1;

}

}

返回' ';

}

}

使用方法:

@Autowired

private Map personMap=new HashMap (;

@Test

公共语音测试() {

person map.get (person enums.class name (2) ).say );

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。