java重构方式

java重构方式这里只是简单例子,以动物方式,如何实现重构1、入口publicclassTestMain{@AutowiredprivateAnimalanimal;@Testpublicvo

大家好,又见面了,我是你们的朋友全栈君。

这里只是简单例子,以动物方式,如何实现重构

1、入口

<span role="heading" aria-level="2">java重构方式
<span role="heading" aria-level="2">java重构方式

public class TestMain {
    @Autowired
    private Animal animal;

    @Test
    public void animal(){
        animal.printAnimal();
    }
}

View Code

2、判断那个类的执行

<span role="heading" aria-level="2">java重构方式
<span role="heading" aria-level="2">java重构方式

@Service
public class Animal {
   @Autowired
   private AnimalFactory animalFactory;

   public void printAnimal(){
       IAnimal pag = animalFactory.getAnimal("pag");
       pag.isAnimal();
   }
}

View Code

3、创建一个工厂,返回不同的类

<span role="heading" aria-level="2">java重构方式
<span role="heading" aria-level="2">java重构方式

@Service
public class AnimalFactory {
    @Autowired
    private List<IAnimal> isAnimal;

    public IAnimal getAnimal(String animal){
        for(IAnimal iAnimal : isAnimal){
            if(iAnimal.isSupport(animal)){
                return iAnimal;
            }
        }
        throw new RuntimeException("没有该动物类型");
    }
}

View Code

4、所需要的接口

<span role="heading" aria-level="2">java重构方式
<span role="heading" aria-level="2">java重构方式

public interface IAnimal {
    public boolean isSupport(String adimalType);

    public void isAnimal();
}

View Code

5、执行类

<span role="heading" aria-level="2">java重构方式
<span role="heading" aria-level="2">java重构方式

public class Dog implements IAnimal {

    @Override
    public boolean isSupport(String adimalType) {
        return adimalType.equals("dog") ? true : false;
    }

    @Override
    public void isAnimal() {
        System.out.println("动物是狗!!!!");
    }
}

View Code

<span role="heading" aria-level="2">java重构方式
<span role="heading" aria-level="2">java重构方式

@Service
public class Pag implements IAnimal{

    @Override
    public boolean isSupport(String adimalType) {
        return adimalType.equals("pag") ? true : false;
    }

    @Override
    public void isAnimal() {
        System.out.println("动物是猪!!!!");
    }
}

View Code

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/155596.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Springboot文件上传机制[通俗易懂]

    Springboot文件上传机制[通俗易懂]springboot文件上传机制:1.访问路径2. 上传完成后返回访问文件地址3. 我们只需要访问返回的地址就可以访问到图片4. yaml配置文件(localpath是实际存储的地址)5. 添加配置类,进行访问地址和存储地址映射 @Value(“${file.upload.suffixPath}”) private String uploadSuffixPath; @Value(“${file.upload.localPath}”) private Strin

    2022年8月9日
    5
  • NLP关键词提取方法总结及实现

    NLP关键词提取方法总结及实现目录一、关键词提取概述二、TF-IDF关键词提取算法及实现三、TextRank关键词提取算法实现四、LDA主题模型关键词提取算法及实现五、Word2Vec词聚类的关键词提取算法及实现六、信息增益关键词提取算法及实现七、互信息关键词提取算法及实现八、卡方检验关键词提取算法及实现九、基于树模型的关键词提取算法及实现十、总结一、关键词提取概述关键词是能够表…

    2025年8月11日
    5
  • ubuntu clion goland 2022.01.4激活码[最新免费获取]2022.01.25

    (ubuntu clion goland 2022.01.4激活码)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月31日
    313
  • [HDU 2096] 小明A+B

    [HDU 2096] 小明A+B[HDU2096]小明A+B 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=20961#include&lt;iostream&gt;2#include&lt;cstdio&gt;3#include&lt;cmath&gt;4#include&lt;algori…

    2022年6月16日
    27
  • 挖矿病毒攻击的排查处置手册

    挖矿病毒攻击的排查处置手册一、背景在用户不知情或未经允许的情况下,占用系统资源和网络资源进行挖矿,影响用户的网络和资源,从而获取虚拟币牟利。为了帮助应对恶意挖矿程序攻击,发现和清除恶意挖矿程序,防护和避免感染恶意挖矿程序,整理了如下针对挖矿活动相关的现状分析和检测处置建议。二、为什么会感染恶意挖矿程序通常遇到企业内网主机感染恶意挖矿程序,或者网站、服务器以及使用的云服务被植入恶意挖矿程序的时候,都不免提出“为什么会感染恶意挖矿程序,以及是如何感染的”诸如此类的问题,目前感染恶意挖矿程序的主要方式:2.1.利用类似其他病毒木

    2022年5月29日
    59
  • 动态规划之01背包问题及其优化(python实现)「建议收藏」

    动态规划之01背包问题及其优化(python实现)「建议收藏」动态规划之01背包问题及其优化(python实现)**背包问题(**Knapsackproblem)是一种组合优化的NP完全问题。问题描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。问题的名称来源于如何选择最合适的物品放置于给定背包中。解决思路:动态规划,对每一件物品遍历背包容量,当背包可容纳值大于等于当前物品,与之前已放…

    2022年7月26日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号