2022-04-01_Java类图关系基本知识学习笔记

2022-04-01  本文已影响0人  kikop

20220401_Java类图关系基本知识学习笔记

1概述

1.1类图节接口关系说明

IOrder:定义订单相关的业务操作,如支付。

IOrderServiceGroupDispatcher:定义订单服务调度接口。

AbstractOrder:实现IOrder接口,订单业务操作的实现类,具体的执行时序,业务逻辑大概已经确定,相当于模板方法了。

注意,这里调度接口中的方法是抽象的,由具体的子类实现。

DefaultOrder:订单实现子类,提供了调度next()方法的具体实现,如负载均衡等。

image-20220401104219089.png

2代码示例

2.1IOrder

package com.kikop.javaclassstudy;


/**
 * @author kikop
 * @version 1.0
 * @project myjvmdemo
 * @file IOrder
 * @desc
 * @date 2022/4/1
 * @time 10:30
 * @by IDE IntelliJ IDEA
 */
public interface IOrder {
    void payByOrder(String strOrderId);
}

2.2IOrderServiceGroupDispatcher

package com.kikop.javaclassstudy;

import com.kikop.javaclassstudy.service.OrderService;

/**
 * @author kikop
 * @version 1.0
 * @project myjvmdemo
 * @file IOrderServiceGroupDispatcher
 * @desc 调度接口定义, 由默认的类实现, DefaultOrder
 * @date 2022/4/1
 * @time 10:30
 * @by IDE IntelliJ IDEA
 */
public interface IOrderServiceGroupDispatcher extends IOrder {

    /**
     * 提供订单服务的负载均衡
     *
     * @return
     */
    OrderService next();

// 可不写
//    @Override
//    void payByOrder(String orderInfo);
}

2.3AbstractOrder

package com.kikop.javaclassstudy;

/**
 * @author kikop
 * @version 1.0
 * @project myjvmdemo
 * @file AbstractOrder
 * @desc 订单抽象类,提供基本的执行骨架
 * 类似:AbstractEventExecutorGroup,直接调用 调度接口中的 next()方法实现
 * @date 2022/4/1
 * @time 10:30
 * @by IDE IntelliJ IDEA
 */
public abstract class AbstractOrder implements IOrderServiceGroupDispatcher {

    @Override
    public void payByOrder(String strOrderId) {
        System.out.println("--1.执行支付...");
        System.out.println("--begin " + this.getClass().toString() + ":" + "payByOrder()");

//        // 1.获取一个可用的订单服务
//        OrderService orderService = next();
//        // 2.执行
//        String orderInfo = orderService.getOrderInfo(strOrderId);

        String orderInfo = next().getOrderInfo(strOrderId);
        System.out.println("--end " + this.getClass().toString() + ":" + "payByOrder()");
    }
}

2.4DefaultOrder

package com.kikop.javaclassstudy;

import com.kikop.javaclassstudy.service.OrderService;
import com.kikop.javaclassstudy.service.impl.OrderServiceImpl;

/**
 * @author kikop
 * @version 1.0
 * @project myjvmdemo
 * @file DefaultOrder
 * @desc 订单的默认实现, 提供具体的调度算法
 * @date 2022/4/1
 * @time 10:30
 * @by IDE IntelliJ IDEA
 */
public class DefaultOrder extends AbstractOrder {

    public DefaultOrder() {
//        System.out.println(this.getClass().toString() + ":" + "DefaultOrder()");
    }

    /**
     * 实现服务调度接口中的 next 默认方法
     * 可基于某种策略进行负载均衡
     * @return
     */
    @Override
    public OrderService next() {
        System.out.println("----2.获取调度信息...");
        System.out.println("----begin " + this.getClass().toString() + ":" + "next()");
        System.out.println("----end " + this.getClass().toString() + ":" + "next()");
        return new OrderServiceImpl();
    }
}

2.5测试

package com.kikop.javaclassstudy;


/**
 * @author kikop
 * @version 1.0
 * @project myjvmdemo
 * @file DefaultOrderTest
 * @desc
 * @date 2022/4/1
 * @time 10:30
 * @by IDE IntelliJ IDEA
 */
public class DefaultOrderTest {

    public static void main(String[] args) {

        String strOrderId = "1000";
        DefaultOrder defaultX = new DefaultOrder();
        defaultX.payByOrder(strOrderId);
    }
}

上一篇 下一篇

猜你喜欢

热点阅读