5
เราสามารถแทนที่การสืบทอดโดยใช้รูปแบบกลยุทธ์และการฉีดการพึ่งพาได้หรือไม่
ตัวอย่างเช่น: var duckBehaviors = new Duckbehavior(); duckBehaviors.quackBehavior = new Quack(); duckBehaviors.flyBehavior = new FlyWithWings(); Duck mallardDuck = new Duck(DuckTypes.MallardDuck, duckBehaviors) เนื่องจากคลาส Duck มีพฤติกรรมทั้งหมด (นามธรรม) การสร้างคลาสใหม่MallardDuck(ซึ่งขยายDuck) จึงไม่จำเป็นต้องมี การอ้างอิง: รูปแบบการออกแบบส่วนหัวแรกบทที่ 1