pattern desigh:composite