常用Design Patten實作
常用pattern不分類
多工類
AlwAysAliveWorkPool:常駐工人池
@Test
void testExecuteWhen2() {
OrderQueue<BlockItem> blockQueue = new OrderQueue<>();
IWorkPool pool = new AlwAysAliveWorkPool<AlwAysAliveWorkPoolTest.BlockItem>(3, "Pool", blockQueue, this, this);
List<BlockItem> collect = IntStream.range(0, 10).mapToObj(i -> new BlockItem(i)).collect(Collectors.toList());
for (BlockItem item : collect) {
blockQueue.add(item);
}
pool.start();
try {
TimeUnit.SECONDS.sleep(2);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
log.info("close");
pool.close();
log.info("end");
}
BlockQueue:堵塞池
CountDownLatchWorkPool:倒數門閂
WorkLatchService:工人門閂
Event Looop
DynamicRouter:動態多工路由器
EventBus
其他
StatusMachine 有限狀態機+整合命令模型
Observable:觀察者模型
Last updated
Was this helpful?