深入浅出设计模式----Welcome to Design Patterns

本文通过设计一个名为SimuDuck的鸭子池塘模拟游戏,探讨了如何利用面向对象技术来处理不同鸭子的行为差异。文章提出了使用策略模式来分离鸭子的不同行为,如游泳、鸣叫和飞行等,从而实现代码的复用性和灵活性。

        设计一个鸭子池塘模拟游戏,叫做SimuDuck。这个游戏可以有各种会游泳(swim)和鸣叫(quack)的鸭子物种。刚开始这个游戏的设计是使用标准的OO技术,设计了一个Duck父类,并且每个Duck子类都继承该父类。 

        但是后来要求有些鸭子有fly的功能

        首先想在父类里面添加fly的方法,然后每个子类继承,但是发现并非所有的鸭子都需要fly的功能。在不需要fly的鸭子里面也需要重写该方法,只是该方法不做任何事情,这些代码成了冗余无用的代码。而且当有更多的鸭子既不需要quack,又不许要fly时,也要在每个子类里重写2个甚至更多的方法。继承未必是解决该问题的好方法。

        考虑用接口。将fly抽象为接口,quack也抽象为接口,能fly的鸭子就实现fly这个接口,能quack的就实现quack接口。这样就不会导致不需要这2个功能的,却也要重写功能代码。但是这未必是个好主意。很多鸭子的fly和quack的代码一样,但是每个实现了fly和quack的鸭子都得重复写同样的代码。最糟糕的是,当你为每个duck copy好所有的fly和quack代码,发现要修改下fly的代码,却每个都要修改,简直就是个噩梦,根本达不到代码重用的目的。

Design Principle: Identity the aspects of your application that vary and separate them from what stays the same.

将那些变化的部分从相对不变的部分中抽取出来,以后我们改变或者修改那些变化的部分时将不会影响到不变的部分。

将duck中变化的fly和quack抽取出来。

Design Principle: Program to an interface, not an implementation.

定义fly和quack的接口,然后每个具体的fly和quack实现这个接口。然后在每个duck内部维护一个fly接口和quack接口的对象。

策略模式

### 回答1: 《Head First设计模式-深入浅出设计模式》是一本以简单有趣的方式介绍设计模式的书籍。设计模式是在软件开发中解决特定问题的一种经验总结,它们提供了在实际开发中可重用、可靠、灵活的解决方案。 该书的主要特点是通过生动有趣的讲解和丰富多样的图表、示例来帮助读者更好地理解和应用设计模式。作者采用了大量的图形和实例来解释设计模式的概念,使读者能够迅速理解并应用这些概念。 这本书涵盖了23种常用的设计模式,如工厂模式、单例模式、适配器模式、装饰器模式等。每一种设计模式都以一个实际的例子开始,引出该模式解决的问题,然后详细解释其结构和应用,最后通过示例代码展示如何使用该模式。 此外,该书还介绍了设计模式之间的关系和如何选择合适的设计模式。它教授了读者如何在具体问题中识别出适用的设计模式,并提供了一些实际的应用建议。 《Head First设计模式-深入浅出设计模式》以其独特的教学风格和简洁明了的讲解深受读者喜爱。这本书不仅适合初学者了解设计模式,也适合有一定经验的开发人员进一步提高他们的软件设计和编程能力。 总之,这本书以其生动有趣的讲解方式和大量的图表、实例为读者介绍了设计模式的基本概念和具体应用,是学习和理解设计模式的一本不可或缺的指南。 ### 回答2: 《Head First设计模式深入浅出设计模式》是一本主要介绍软件设计模式的书籍。设计模式是在软件开发中经常出现的问题的解决方案,可以帮助开发人员更好地构建可重用、可扩展、可维护的代码。 这本书以深入浅出的方式介绍了23种常见的设计模式,通过生动有趣的讲解和大量的图形和实例,使读者能够更加轻松地理解和掌握设计模式。它采用了非传统的学习方式,通过讲故事、练习、谜题等方式将设计模式的概念和使用方法娓娓道来。 该书首先从简单的设计模式开始,引导读者逐步理解和掌握基础的设计原则和模式,如单例模式、工厂模式等。然后,逐渐深入介绍更复杂的模式,如装饰器模式、观察者模式、策略模式等。每个模式都通过具体的案例和代码示例进行讲解,帮助读者理解模式的思想和应用场景。 除了具体的设计模式之外,这本书还关注了如何将设计模式应用到现实的软件开发中。它探讨了如何根据不同的需求选择合适的设计模式,以及如何通过设计模式提高代码的质量和可维护性。 总的来说,《Head First设计模式深入浅出设计模式》是一本非常有趣、易懂且实用的设计模式入门书籍。无论是初学者还是有一定经验的开发人员,都能从中获得有益的知识和经验,提高软件开发的能力和效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值