电力杆 Ractivejs 百度seo关键词优化 后台模板下载 河南普通话考试 linux内存管理 jquery循环遍历 mysql重新初始化 时间戳java jq入口函数 websocket库 maya曲线建模 python运行环境 python中str函数 python中open python异常 windows搭建python开发环境 javaobject java基本语法 java的instanceof 怎么安装java环境 java获取ip地址 java终止线程 java实例变量 java获取当前ip javaspring linux系统安装 远程登录linux 金山wps2003 嵌入式linux驱动程序设计从入门到精通 隐藏虚拟键 微信python退出程序 圆形截图 kms神龙 winterboard fdisk下载 lol语音包 pr视频加速 php正则匹配 xmind画流程图
当前位置: 首页 > 学习教程  > 编程语言

java-简单工厂模式+策略模式的简单应用实现

2020/8/11 19:50:16 文章标签:

 

首先先来理解一下简单工厂模式和策略模式的概念:

1.简单工厂模式:

简单工厂模式是创建型模式, 简单工厂模式的是工厂类根据传入的参数,决定应该创建并且返回哪一个产品类(这些产品类继承自一个父类或接口)的实例。具体的创建过程业务代码不需要关心,简单工厂模式主要用于那些创建对象少的场景。

2.策略模式:

策略模式表示的是在遇到一种问题有多种解法的时候,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。主要用在解决if/else复杂的处理逻辑,易拓展情况下的处理,减少代码臃肿。当然也并不是所以的if/else都需要用到策略模式,。需要减少if/else臃肿时才用到。所以也不必刻意追求消除if/else,相比之下其实有时候if/else更易读。

1.工厂类根据传入的Class类,动态的实例化对象。

/**
 * @author max
 * @description 策略模式简单工厂类
 */
public class StrategyPatternPlatformFactory {

    public static IStrategyPatternService getClass(Class<? extends IStrategyPatternService> clazz){
        if (null != clazz){
            try {
                return clazz.newInstance();
            } catch (Exception e) {
                throw new SystemException("-1","clazz实例化异常");
            }
        }
        return null;
    }
}

 2.策略接口类,创建一个接口,根据不同的行为,拓展实现该接口,遵循开闭原则。

/**
 * @author max
 * @description 策略模式接口
 * @date 2020/07/18
 */
@Component
public interface IStrategyPatternService {
    //定义相关行为方法,相当于与if中的业务处理逻辑
    public String get();
}

3.1.策略接口实现类01

/**
 * @author max
 * @description 策略模式实现类01
 * @date 2020/07/18
 */
public class StrategyPatternService01Impl implements IStrategyPatternService {
    @Override
    public String get() {
        //逻辑处理
        return "demo01";
    }
}

 3.2:策略接口实现类02

/**
 * @author max
 * @description 策略模式实现类02
 * @date 2020/07/18
 */
public class StrategyPatternService02Impl implements IStrategyPatternService {
    @Override
    public String get() {
        //逻辑处理
        return "demo02";
    }
}

4.最后测试一下

/**
 * 策略模式的简单实现
 */
@Test
public void testStrategyPattern(){
    //实例化对象
    IStrategyPatternService service = StrategyPatternPlatformFactory.getClass(StrategyPatternService01Impl.class);
    //调用对象方法
    String s = service.get();
    System.out.println(s);
}

 其实,实现起来不复杂,设计模式是一种思想,是前人积累总结的经验,我们开发遵循这些规则,思路会更加清晰,也更易读。


本文链接: http://www.dtmao.cc/news_show_100215.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?