abstarct factory pattern
fix build error
add .cgh to clean type file in Makefile
.cgh is produce by g++ -c *.h
abstract factory pattern done