20220401_Java类图关系基本知识学习笔记
1概述
1.1类图节接口关系说明
IOrder:定义订单相关的业务操作,如支付。
IOrderServiceGroupDispatcher:定义订单服务调度接口。
AbstractOrder:实现IOrder接口,订单业务操作的实现类,具体的执行时序,业务逻辑大概已经确定,相当于模板方法了。
注意,这里调度接口中的方法是抽象的,由具体的子类实现。
DefaultOrder:订单实现子类,提供了调度next()方法的具体实现,如负载均衡等。
image-20220401104219089.png2代码示例
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);
}
}
网友评论