美文网首页
2022-04-01_Java类图关系基本知识学习笔记

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

作者: kikop | 来源:发表于2022-04-01 10:49 被阅读0次

    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);
        }
    }
    
    

    相关文章

      网友评论

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

          本文链接:https://www.haomeiwen.com/subject/pgfajrtx.html