男女怎么做那个视频网站,怎样做士产品销售网站,网站建设上市公司,国内html5网站案例前言
好记性不如烂笔头。 问题#xff1a; 现在有一个数字与字母的映射表#xff0c;且有以下规则#xff1a;
映射表#xff1a; 数字 字母 3 A 7 B 9 C
规则#xff1a; 1.碰到当前数字时#xff0c;使用字母替换#xff0c;例如#xff0c;3- A 2.碰到当前数…前言
好记性不如烂笔头。 问题 现在有一个数字与字母的映射表且有以下规则
映射表 数字 字母 3 A 7 B 9 C
规则 1.碰到当前数字时使用字母替换例如3- A 2.碰到当前数字的倍数时使用字母替换 例如6-A 3.碰到多个数字的倍数时使用多个对应的字母替代例如15 - AB21-AC 请根据映射表和规则给出0-100之间的转换结果提示不要直接在for循环中使用if判断尽可能的使用设计模式。
解决方法策略模式 策略模式Strategy Pattern是一种行为设计模式它使你能够在运行时改变对象的行为。在策略模式中一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式。
在策略模式中我们创建表示各种策略的对象和一个行为随着策略对象改变而改变的 context 对象。策略对象更改 context 对象的执行算法。
策略模式通常涉及三个角色
Context上下文这个类用一个 Strategy策略对象来配置其行为。Context 维护一个对 Strategy 对象的引用可调用其接口来执行所需策略。
Strategy策略这是一个接口或抽象类定义了所有支持的算法的公共接口。Context 使用这个接口来调用具体的策略实现。
ConcreteStrategy具体策略实现了 Strategy 接口的具体类。每个具体策略类都提供了不同的算法或行为。
代码实例 一、定义策略接口
package com.service;/***Description 定义策略接口*Author yingluo*Date 2024-2-23**/
public interface NumberToLetterStrategy {public String convert(int number);
}二、各个数字实现类
package com.service.impl;import com.service.NumberToLetterStrategy;/*** Description: 数字3的映射规则创建实现类* Author:yingluo* Date:2024/2/23**/
public class ThreeStrategy implements NumberToLetterStrategy {Overridepublic String convert(int number) {if(number 3 || number % 3 0){return A;}return ;}
}package com.service.impl;import com.service.NumberToLetterStrategy;/*** Description: 数字7的映射规则创建实现类* Author:yingluo* Date:2024/2/23**/
public class SevenStrategy implements NumberToLetterStrategy {Overridepublic String convert(int number) {if(number 7 || number % 7 0){return B;}return ;}
}
package com.service.impl;import com.service.NumberToLetterStrategy;/*** Description: 数字9的映射规则创建实现类* Author:yingluo* Date:2024/2/23**/
public class NineStrategy implements NumberToLetterStrategy {Overridepublic String convert(int number) {if(number 9 || number % 9 0){return C;}return ;}
}
三、使用策略对象来执行映射
package com.control;import com.service.NumberToLetterStrategy;
import com.service.impl.NineStrategy;
import com.service.impl.SevenStrategy;
import com.service.impl.ThreeStrategy;import java.util.HashMap;
import java.util.Map;/*** Description: 使用策略对象来执行映射* Author:yingluo* Date:2024/2/23**/
public class NumberToLetterContext {private MapInteger, NumberToLetterStrategy strategies;public NumberToLetterContext(){strategies new HashMap();strategies.put(3, new ThreeStrategy());strategies.put(7, new SevenStrategy());strategies.put(9, new NineStrategy());}public String convert(int number){StringBuffer result new StringBuffer();for (NumberToLetterStrategy strategy : strategies.values()){result.append(strategy.convert(number));}return result.toString();}
}
四、测试类
package com;import com.control.NumberToLetterContext;/*** Description: main方法测试类* Author:yingluo* Date:2024/2/23**/
public class Test {public static void main(String[] args) {NumberToLetterContext context new NumberToLetterContext();for (int i0 ; i100 ; i){System.out.println(i-context.convert(i));}}
}