observer, abstract factory, dao, delegate