AbstractFactory and Builder

Signed-off-by: eggfly <lihaohua90@gmail.com>