design pattern technology