常用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?