首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在行为委托设计模式中添加一个新的类,并从类继承重构?

在行为委托设计模式中,要添加一个新的类并从该类继承重构,可以按照以下步骤进行操作:

  1. 确定新类的功能和目的:首先,需要明确新类的作用和功能,确定它在行为委托模式中的角色和责任。
  2. 创建新类:根据确定的功能和目的,创建一个新的类。可以使用任何编程语言来实现这个类,例如JavaScript、Java、Python等。
  3. 确定委托对象:在行为委托模式中,委托对象是负责实际执行操作的对象。确定新类需要委托给哪个对象来执行具体的操作。
  4. 委托方法:在新类中,定义一个委托方法,该方法将调用委托对象的相应方法来执行具体的操作。可以根据需要传递参数给委托方法。
  5. 继承重构:通过继承重构,将新类与已有的类进行关联。可以通过继承关系来实现代码的重用和扩展。
  6. 调用新类的方法:在需要使用新类的地方,调用新类的方法来执行相应的操作。可以根据需要传递参数给新类的方法。

通过以上步骤,可以在行为委托设计模式中成功添加一个新的类,并从该类继承重构。这样可以实现代码的模块化和可扩展性,使系统更加灵活和易于维护。

请注意,以上答案是基于行为委托设计模式的一般性描述,具体实现方式和代码示例可能因编程语言和具体场景而异。对于具体的实现细节,建议参考相关编程语言的文档和行为委托设计模式的实践经验。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

Java开发存在这样代码,反而影响整体整洁和可读性

何时忽略 如果是以下情况,不要删除已创建中间人: 添加中间人是为了避免之间依赖关系。 一些设计模式有目的地创建中间人(例如代理模式和装饰器模式)。...这通常优点是能够动态地改变行为(见策略设计模式,访问者设计模式和其他模式)。...解决 该函数最常引用建立一个有着类似行为函数。将旧函数变成一个单纯委托函数,或是旧函数完全移除。 ? 提炼函数(Extract Method) 问题 你有一段代码可以组织在一起。...解决 该函数最常引用建立一个有着类似行为函数。将旧函数变成一个单纯委托函数,或是旧函数完全移除。 ?...解决 该函数最常引用建立一个有着类似行为函数。将旧函数变成一个单纯委托函数,或是旧函数完全移除。 ?

44930

【笔记】《重构: 改善既有代码设计

找到多余间接层, 删去这种过度设计 2.5 重构难题 重构并不是毫无缺点, 我们应该时时监控重构行为, 时刻注意重构可能引入问题 两个模型之间加入一个分隔层可以隔离两个组件变化 修改接口是重构重要事项..., 单单是不停转发源操作时, 直接把委托去掉令客户调用源更加方便 7.7 引入外加函数 当需要给一个无法修改添加功能时, 可以客户建立一个函数以参数形式接受目标, 然后自己包装功能...Java实现起来复杂一些 11.11 以委托取代继承 当子类只使用到基一部分方法和字段时, 可以去掉继承关系, 用一个字段保存基, 然后改为委托处理所需功能....成本是需要在基增加委托函数, 但一般难度不大 11.12 以继承取代委托 11.11反面, 当委托了太多基函数时, 干脆就收了吧..... 12.3 将领域和表述/显示分离 也就是用MVC设计模式设计GUI, 核心是对每个窗口建立一个储存自身数据领域(Field), 将与计算和显示通过领域分离开来 12.4 提炼继承体系 某个做了太多工作

1.5K20

关于重构总结

重构是一种经千锤百炼形成有条不紊程序整理方法,可以最大限度地减少整理过程引入错误几率。 本质上说,重构就是代码写好之后改进它设计。...我们希望程序是这样: 容易阅读 所有的逻辑都只唯一地点指定 (单一原则,去重,提取) 改动不会危及现有行为 (可拓展性,重用性) 尽可能简单表达条件逻辑 重构是这样一个过程:它在一个目前可运行程序上进行...客户通过一个委托调用另一个对象 移除中间人 让客户直接调用委托 某个做了过多简单委托动作 引入外加函数 客户建立一个函数,并以第一参数形式传入一个服务实例。...子类新建一个字段用以保存超,调整子类函数,改为委托,然后去掉两者之间继承关系 某个子类只使用了超接口中一部分,或是根本不需要继承而来数据时 以继承取代委托委托继承受托 两个之间存在委托关系...,且极简委托函数太多时 大型重构 四个大型重构 名称 解释 动机 梳理并分解继承体系 建立两个继承体系,并通过委托关系让其中一个可以调用另一个 某个继承体系同时承担两项责任 将过程设计转化为对象设计

97010

设计模式之美笔记(一)

越抽象、越顶层、越脱离具体某一实现设计,越能提高代码灵活性、扩展性、可维护性。 一个可以具有多重行为,但是不能是多种东西。...(委托业也就是实现一个) 开闭原则OPC 给对象添加属性属于扩展还是修改,不同粒度来看是不同宏观角度角度确实是修改了这个,但是细一点但是并没有修改易有内容,而是扩展了属性 改代码标准之一...如何系统开发和设计 需求分析,根据用户护士节 合理地将功能划分到不同模块 设计模块与模块之间交互关系 设计模块接口、数据库、业务模型 规范与重构 重构原因 重构步骤 第一轮重构:提高代码可读性第二轮重构...spring循环依赖是如何解决? 建造者模式 建造者模式好处,可以防止代码创建时候参数传错等问题。...先将对象序列化到内存,然后再反序列化读取到对象 结构型设计模式 结构型设计模式主要就是解决和对象之间关系 代理模式 不改变原始情况下下增加逻辑,其中思想也就是单一原则。

78130

何时应该重构代码?如何重构代码?

三次法则:第一次做某件事情是只管去做;第二次做类似的事情会产生反感;第三次再做类似的事,你就应该重构 最常见重构时机是想给软件添加特性时候; 重构另个一原动力是:代码设计无法帮助我轻松添加所需要特性...如果想要添加一大堆额外行为,建立一个包含这些额外行为,让其成为子类。 20.纯稚数据 纯稚数据是指:它们拥有一些字段,以及用于访问(读写)这些字段函数,除此之外一无长物。...1.搬移函数 你程序,有个函数与其所驻之外另个一进行跟过交流:调用后者或被后者调用。该函数最长引用建立一个有着类似行为函数。...6.移除中间人 某个做了过多简单委托。让客户直接调用委托。每当客户要使用手委托特性时,你就必须在服务端添加一个简单委托函数。随着受委托特性越来越多,这一过程会让你很痛苦。...12.以继承取代委托两个中使用委托关系,并经常为整个接口编写许多极简单委托函数。让委托继承受托

1.7K30

狗屎一样代码!快,重构我!

三次法则 第一次做某件事情是只管去做;第二次做类似的事情会产生反感;第三次再做类似的事,你就应该重构 最常见重构时机是想给软件添加特性时候; 重构另个一原动力是:代码设计无法帮助我轻松添加所需要特性...如果想要添加一大堆额外行为,建立一个包含这些额外行为,让其成为子类。 20、纯稚数据 纯稚数据是指:它们拥有一些字段,以及用于访问(读写)这些字段函数,除此之外一无长物。...1、搬移函数 你程序,有个函数与其所驻之外另个一进行跟过交流:调用后者或被后者调用。该函数最长引用建立一个有着类似行为函数。...6、移除中间人 某个做了过多简单委托。让客户直接调用委托。 每当客户要使用手委托特性时,你就必须在服务端添加一个简单委托函数。随着受委托特性越来越多,这一过程会让你很痛苦。...子类新建字段保存超,调整子类函数为委托,取消继承关系。 12、以继承取代委托两个中使用委托关系,并经常为整个接口编写许多极简单委托函数。`让委托继承受托

1.1K40

狗屎一样代码!快,重构我!

三次法则 第一次做某件事情是只管去做;第二次做类似的事情会产生反感;第三次再做类似的事,你就应该重构 最常见重构时机是想给软件添加特性时候; 重构另个一原动力是:代码设计无法帮助我轻松添加所需要特性...如果想要添加一大堆额外行为,建立一个包含这些额外行为,让其成为子类。 20、纯稚数据 纯稚数据是指:它们拥有一些字段,以及用于访问(读写)这些字段函数,除此之外一无长物。...1、搬移函数 你程序,有个函数与其所驻之外另个一进行跟过交流:调用后者或被后者调用。该函数最长引用建立一个有着类似行为函数。...6、移除中间人 某个做了过多简单委托。让客户直接调用委托。 每当客户要使用手委托特性时,你就必须在服务端添加一个简单委托函数。随着受委托特性越来越多,这一过程会让你很痛苦。...子类新建字段保存超,调整子类函数为委托,取消继承关系。 12、以继承取代委托两个中使用委托关系,并经常为整个接口编写许多极简单委托函数。`让委托继承受托

77230

重构》第三章 - 读后感(平行继承、冗余、兼容未来、迷惑字段、耦合消息链、中间人、过度依恋)

重构》第三章剩余部分里所设计部分确实还是比较难理解,或者说书中总结一些坏味道代码潜在存在点比较难以发现吧,这块还是跟作者本人经验有一下关系,为了更好阅读本书,所以这块作者打算抄过来。...同时希望能有一些感悟。 平行继承体系 每当我们为某个添加一个子类,必须也为另一个相应添加一个子类。...过度耦合消息链 书中对消息链定义大概是一个引用另一个,然后另一个引用另外一个,然后这样一直引用着,消息链会很长。当然这种引用调用还是一个函数。...中间人 这里中间人主要描述是面向对象编程委托模式,因为面向对象我们要调用其他方法,无非就是直接使用引用直接调用或者就是通过其他进行委托去调用。...或者将具体共性代码一处实现,另一个通过委托方式来获取结果。书中还写道对于父提供强大功能如果超出了子类所需程度就应该将其独立出来,而不是继续存在与继承体系

34720

告别垃圾代码,请收下这几个锦囊妙计!

三次法则 第一次做某件事情是只管去做;第二次做类似的事情会产生反感;第三次再做类似的事,你就应该重构 最常见重构时机是想给软件添加特性时候; 重构另个一原动力是:代码设计无法帮助我轻松添加所需要特性...如果想要添加一大堆额外行为,建立一个包含这些额外行为,让其成为子类。 20、纯稚数据 纯稚数据是指:它们拥有一些字段,以及用于访问(读写)这些字段函数,除此之外一无长物。...1、搬移函数 你程序,有个函数与其所驻之外另个一进行跟过交流:调用后者或被后者调用。该函数最长引用建立一个有着类似行为函数。...6、移除中间人 某个做了过多简单委托。让客户直接调用委托。 每当客户要使用手委托特性时,你就必须在服务端添加一个简单委托函数。随着受委托特性越来越多,这一过程会让你很痛苦。...12、以继承取代委托两个中使用委托关系,并经常为整个接口编写许多极简单委托函数。`让委托继承受托

45010

告别垃圾代码,请收下这几个锦囊妙计!

三次法则 第一次做某件事情是只管去做;第二次做类似的事情会产生反感;第三次再做类似的事,你就应该重构 最常见重构时机是想给软件添加特性时候; 重构另个一原动力是:代码设计无法帮助我轻松添加所需要特性...如果想要添加一大堆额外行为,建立一个包含这些额外行为,让其成为子类。 20、纯稚数据 纯稚数据是指:它们拥有一些字段,以及用于访问(读写)这些字段函数,除此之外一无长物。...1、搬移函数 你程序,有个函数与其所驻之外另个一进行跟过交流:调用后者或被后者调用。该函数最长引用建立一个有着类似行为函数。...6、移除中间人 某个做了过多简单委托。让客户直接调用委托。 每当客户要使用手委托特性时,你就必须在服务端添加一个简单委托函数。随着受委托特性越来越多,这一过程会让你很痛苦。...12、以继承取代委托两个中使用委托关系,并经常为整个接口编写许多极简单委托函数。`让委托继承受托

52330

狗屎一样代码!快,重构我!

三次法则 第一次做某件事情是只管去做;第二次做类似的事情会产生反感;第三次再做类似的事,你就应该重构 最常见重构时机是想给软件添加特性时候; 重构另个一原动力是:代码设计无法帮助我轻松添加所需要特性...如果想要添加一大堆额外行为,建立一个包含这些额外行为,让其成为子类。 20、纯稚数据 纯稚数据是指:它们拥有一些字段,以及用于访问(读写)这些字段函数,除此之外一无长物。...1、搬移函数 你程序,有个函数与其所驻之外另个一进行跟过交流:调用后者或被后者调用。该函数最长引用建立一个有着类似行为函数。...6、移除中间人 某个做了过多简单委托。让客户直接调用委托。 每当客户要使用手委托特性时,你就必须在服务端添加一个简单委托函数。随着受委托特性越来越多,这一过程会让你很痛苦。...子类新建字段保存超,调整子类函数为委托,取消继承关系。 12、以继承取代委托两个中使用委托关系,并经常为整个接口编写许多极简单委托函数。让委托继承受托

73730

这代码写太烂了!你以为我真想写“垃圾代码”吗?

2、为何重构 改进软件设计:如果没有重构,程序设计会逐渐变质,重构很像是整理代码,你所做就是让所有的东西回到应处位置上。...三次法则 第一次做某件事情是只管去做;第二次做类似的事情会产生反感;第三次再做类似的事,你就应该重构 最常见重构时机是想给软件添加特性时候; 重构另个一原动力是:代码设计无法帮助我轻松添加所需要特性...如果想要添加一大堆额外行为,建立一个包含这些额外行为,让其成为子类。 20、纯稚数据 纯稚数据是指:它们拥有一些字段,以及用于访问(读写)这些字段函数,除此之外一无长物。...1、搬移函数 你程序,有个函数与其所驻之外另个一进行跟过交流:调用后者或被后者调用。该函数最长引用建立一个有着类似行为函数。...6、移除中间人 某个做了过多简单委托。让客户直接调用委托。 每当客户要使用手委托特性时,你就必须在服务端添加一个简单委托函数。随着受委托特性越来越多,这一过程会让你很痛苦。

94730

开发滥用面向对象,你是否违背了编程原则

switch 常被工厂设计模式族(工厂方法模式(Factory Method)和抽象工厂模式(Abstract Factory))所使用,这种情况下也没必要重构。...解决 该函数最常引用建立一个有着类似行为函数。将旧函数变成一个单纯委托函数,或是旧函数完全移除。 ?...解决 该函数最常引用建立一个有着类似行为函数。将旧函数变成一个单纯委托函数,或是旧函数完全移除。 ? 添加参数(Add Parameter) 问题 某个函数需要从调用端得到更多信息。...如果继承是适当,则去除子类不需要字段和方法。运用 提炼超(Extract Superclass) 将所有超对于子类有用字段和函数提取出来,置入一个,然后让两个继承自它。...解决 子类中新建一个字段用以保存超; 调整子类函数,令它改而委托; 然后去掉两者之间继承关系。 ? 提炼超(Extract Superclass) 问题 两个有相似特性。 ?

80140

读《重构:改善既有代码设计

每一次重构其实对于一个项目来说都是无比艰难决定,上有业务需求,下有重构使命,时间紧迫,希望得到很好效果,压力都会比较大。...什么是重构? 是不改变系统行为前提下,对内部代码重新组织,提高可理解性和降低修改成本。 为什么要重构?...比如这种情况发生在重构行为后,弱化了某个职责 Hide Delegate(隐藏“委托关系”) server端隐藏某个,这样客户端只需要知道1个就能做逻辑操作,而不需要同时知道多个才能进行逻辑操作了...value 套用模板方法设计模式一样 Introduce Null Object(引入Null对象) 针对null对象设计模式 可以将null时,业务逻辑例外算法NullObject实现一份,...,考虑将委托改成继承关系 大型重构 Tease Apart Inheritance(梳理并分解继承体系) 桥接模式分割 Convert Procedural Design to Objects(将过程化设计转化为对象设计

63540

RefactoringGuru 代码异味和重构技巧总结

这些重构技术展示了如何之间安全地移动功能,创建,以及隐藏实现细节以防公开访问。 移动方法 问题:一个方法一个中使用次数多于它自己中使用次数。...解决方案:创建一个,将旧字段及其行为放在该类,并将该类对象存储原始。 将值更改为引用 问题:所以你有单个许多相同实例,并需要用单个对象替换它。...处理泛化 抽象有自己一组重构技术,主要关于沿着继承层次结构移动功能、创建和接口、用委托代替继承以及相反。 上移字段 问题:两个具有相同字段。...用委托替换继承 问题:有一个子类只使用其超一部分方法(或者不可能继承数据)。 解决方案:创建一个字段并在其中放置一个对象,将方法委托给超对象,并摆脱继承。...用继承替换委托 问题:一个包含许多简单方法,这些方法将委托给另一个所有方法。 解决方案:使该类继承一个,这样就不需要委托方法。

1.8K40

设计模式之美 Part1

可维护性(maintainability) 破坏原有代码设计、不引入 bug 情况下,能够快速地修改或者添加代码。...可扩展性(extensibility) 我们不修改或少量修改原有代码情况下,通过扩展方式添加功能代码。...当我们添加一个功能代码时候,原有的代码已经预留好了扩展点,我们不需要修改原有的代码,只要在扩展点上添加代码即可。这个时候,我们除了可以说代码易扩展,还可以说代码写得好灵活。...不常用有:访问者模式、备忘录模式、命令模式、解释器模式、中介模式。 编程规范 主要解决是代码可读性问题。 代码重构 软件开发,只要软件不停地迭代,就没有一劳永逸设计。...面向对象编程设计还是挺需要技巧,挺需要一定设计经验。你要去思考如何封装合适数据和方法到一个里,如何设计之间关系,如何设计之间交互等等诸多设计问题。

19410

《你不知道JavaScript》-- 原型(笔记)

混合对象“” 1.1 理论 /继承描述了一种代码组织结构形式--一种软件对真实世界问题领域建模方法。...JavaScript实际上没有,为了满足对于设计模式最普遍需求,JavaScript提供了一些近似语法。...软件设计是一种可选模式,我们可以决定是否JavaScript中使用它。 1.2 机制 许多面向语言中,“标准库”会提供Stack,它是一种“栈”数据结构(支持压入、弹出等)。...1.3 继承 面向语言里,可以先定义一个,然后定义一个继承前者,后者通常被称为“子类”,前者通常被称为“父”。...定义好一个子类后,相对于父来说它是一个独立并且完全不同,子类会包含父行为原始副本,也可以重写所有继承行为或者定义行为

29210

重构》阅读笔记-代码坏味道

决定何时重构、何时停止和知道如何重构一样重要! 开发者必须通过实践培养自己经验和直觉,培养出自己判断力:学会判断一个内有多少个实例变量算是太大、学会判断一个函数内有多少行代码才算太长。...如果你发现某个继承体系名称前缀和另一个继承体系名称前缀完全相同,就属于这种情况。 依恋情结(Feature Envy) 面向对象精髓在于:“将数据和对数据操作行为包装在一起”。...减少字段和参数个数,当然可以去除一些坏味道,但更重要是:一旦拥有对象,你就有机会寻找Feature Envy,这可以帮你指出能够移至种种方法。...但是,Spring框架开发,我们经常需要定义很多domain对象。 被拒绝遗嘱(Refused Request) 子类应该继承函数和数据,但如果它们不想或者不需要继承,又该怎么办呢?...按照传统说法,这就意味着继承体系设计错误。你需要为这个子类新建一个兄弟,然后让父只包括两个子类共享部分。

58220

python设计模式-状态模式

考虑封装变化,把每个状态行为都放在各自,每个状态只要实现自己动作,用加入方式来实现状态加入。...定义State 父,在这个,糖果机每个动作都有一个应对方法 为机器每个状态实现状态,这些将负责在对应状态下进行机器行为 摆脱旧条件代码,将动作委托到状态 实现代码如下: #...上面重构部分代码使用就是状态模式: 定义 状态模式: 状态模式允许对象在内部状态改变时改变它行为,对象看起来好像修改了它。 状态模式图如下: ?...状态模式是将多个行为封装在状态对象, context 行为随时可委托到其中一个状态。当前状态不同状态对象改变,以反映出context 内部状态,context 行为也会随之改变。...总结 状态模式允许一个对象给予内部状态而拥有不同行为 状态模式代表状态 Context 会将行为委托给当前状态对象 通过将每状态封装进一个,把改变局部化 状态装欢可以由State 或Context

33610

策略设计模式简单指南

它基于组合优于继承原则。它定义了一系列算法,封装了每一个算法,并使它们在运行时可以互换。此模式背后核心思想是将算法与主要对象分开,允许对象将算法行为委托给其包含策略之一。...简单来说,策略设计模式提供了一种将对象行为提取到单独方法,这些可以在运行时换入换出。这使对象更加灵活和可重用,因为可以轻松添加或修改不同策略,而无需更改对象核心代码。...策略实现此接口以提供其独特行为实现。 具体策略:实现策略接口。每个策略都封装了上下文可以在运行时切换到特定行为。 策略设计模式如何工作 策略设计模式通过将对象行为与对象本身分开来工作。...实施策略设计模式 本节,我们将讨论如何实施策略设计模式。我们将从一个违反策略设计模式代码示例开始,并解释其中问题。然后,我们将重构代码来演示如何实现策略设计模式。...这段代码问题在于它违反了 开闭原则 ,该原则规定应该对扩展开放但对修改关闭。在这段代码,如果要添加支付类型,则必须修改方法processPayment,这违反了开放-封闭原则。

13530
领券