1.任务: 给鸭子增加一个飞行的功能
方式一: 接口Duck中声明fly(),然后在子类中具体实现
弊端: 每当新增一种方法,都会影响现有的鸭子类,
方法二: 将变化的,非共性的功能抽取出来,用接口来实现,需要哪个功能就实现哪个接口
弊端:代码无法复用,每个集成Flyable的类都要重写一遍fly()方法
方法三: 用委托的办法,创建一个飞行行为接口FlyBehavior,然后用不同的类来实现fly()方法
任何类想要具有飞行的功能,只要拥有FlyBehavior成员变量,然后创建FlyBehavior的子类对象就可了以
Duck类中有FlyBehavior成员变量
MallardDuck继承Duck,所以也有FlyBehavior成员变量,调用performFly()方法就能执行具体对象的方法了
总结:用接口的方式,本质上是将功能解耦,编程一个个单一的对象,然后按需组合成你需要的对象,这种方式有更高的扩展性
用继承的方式,其实是对功能进行了限制,比如在超类中定义fly(),只有Duck的子类可以实现这个方法,其他动物需要重新在超类中再声明一次fly()。
原则: 把变化的部分取出并封装起来,好让其它部分不会受到影响。
相关推荐
使用c++实现的委托模式源代码,供学习设计模式参考使用
### 委托模式深入解析 #### 概述与核心理念 委托模式是一种设计模式,旨在通过使用一个对象(称为受委托者)来提供另一个对象(称为委托者)的功能,从而实现类的功能扩展和复用。与传统的继承机制相比,委托模式...
在Go语言中,委托模式是一种设计模式,它允许一个结构体包含另一个结构体,从而能够直接访问被包含结构体的方法和字段。这种模式在Go语言中被称为内嵌或嵌入(Embedding)。通过内嵌,我们可以实现代码复用,简化...
Struts、DAO、工厂模式、委托模式以及值对象模式是Java Web开发中常见的设计模式和技术栈,它们在构建高效、可维护的系统中扮演着重要角色。以下将详细阐述这些概念及其相互作用。 **Struts** 是一个开源的MVC...
委托模式(Delegate Pattern)是iOS开发中最常用的设计模式之一,它允许一个对象(委托对象)代表另一个对象(委托者)执行某些操作。这种模式在iOS中的应用非常广泛,比如UITableView的数据源和代理方法、UIWebView...
在编程领域,委托模式是一种设计模式,它允许我们通过一个对象来间接调用另一个对象的方法,从而实现对原对象的功能扩展或行为增强。在Java中,动态代理是实现委托模式的一种常见方式,它允许我们在运行时创建具有...
在iOS开发中,委托模式(Delegate Pattern)和关键值观察(Key-Value Observing, KVO)是两种常用的设计模式,它们在实现组件间的通信和数据绑定时发挥着重要作用。让我们详细了解一下这两种模式以及如何在实际项目...
委托模式的目的是允许一个对象将任务的责任委托给另一个辅助对象。 ## 二、详细解释及实际示例 1. **实际示例**: - 在一家餐厅中,主厨将任务委托给副厨:一位负责烧烤,另一位负责沙拉,第三位负责甜点。每位副...
在iOS开发中,委托模式(Delegate Pattern)是一种常见的设计模式,用于实现对象间的通信和协作。在本案例中,我们通过分析iPhone的源码样例,可以看到如何在两个UIViewController之间使用委托模式进行交互。 首先...
《建设工程监理委托模式实施程序》主要探讨了在不同建设工程项目中,如何有效地实施监理工作,以及常见的监理委托模式。以下是对这些模式的详细说明: 1. **平行承发包模式下的监理模式**: - **单家监理单位模式*...
在本场景中,"委托模式窗体间消息传递(多播委托)"是一种设计模式,用于在多个窗体之间共享数据或通知状态改变。这种技术尤其在Windows桌面应用开发中常见,例如使用C#或VB.NET构建的WPF或WinForms应用程序。 **...
【美国广播电视体制】\n\n美国的广播电视体制主要围绕两种模式展开:公众委托模式和市场模式。公众委托模式强调政府规制,以保障公共利益,而市场模式则侧重于市场力量来决定广播内容和服务。这两种模式都源于联邦...
然而,在大股东控制的上市公司中,原有的独立审计委托模式面临新的挑战和困境。谢世飞的论文《论大股东控制下的上市公司独立审计委托模式》探讨了这一问题,并提出了相应的改进建议。 在传统的公司治理模式中,独立...
Cocoa Touch框架下使用大量使用委托(delegation),根据苹果公司的文档,delegate是Cocoa Touch框架所采用的委托模式的一种形式。例子实现一个自己构建的类似于UIButton功能的组件。
java类加载器学习三、类加载器的委托模式
委托模式是一种软件设计模式,它允许一个对象将请求转发给另一个对象来处理。在PHP中,委托模式可以用来实现动态职责绑定,即在运行时确定对象的责任。这种模式的核心思想是,一个对象(称为委托者)持有对另一个...
建设工程监理委托模式与实施程序PPT学习教案.pptx
模板模式是一种行为设计模式,它使你能在不破坏...而委托模式则是通过将责任分派给其他对象,实现了职责的分离和解耦,使得系统更易于管理和维护。在实际编程中,这两种模式经常结合使用,以实现复杂系统的灵活设计。
委托模式是一种行为型设计模式,它允许对象将某些操作的直接调用委托给另一个对象。当对象需要执行一项功能,但是不想或者不能直接实现该功能时,可以通过委托模式将这项功能委派给其他对象。在委托模式中,委托者...
在iOS中,委托模式主要用在UIKit框架中,如UITableView、UICollectionView、UIViewController等,用于处理用户交互和其他事件。 首先,我们需要创建一个协议。协议定义了委托对象需要遵循的约定,通常包含一些可选...