首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏技术赋能学术

    Head First设计模式——策略模式

    现在需要新增一种鸭子,但这个鸭子是一个玩具橡皮鸭,我们按照继承的方式则橡皮鸭实现代码如下 publci class RubberDuck:Duck{  public override void qucak 但是问题出现了,橡皮鸭是不会飞的,于是我们可以像覆盖qucak方法一样在RubberDuck中覆盖fly方法。 {}   public void swin(){}   public abstract void display(); public void fly(){} } publci class RubberDuck = new RubberDuck(); 111 rubberDuck.display(); 112 rubberDuck.PerFormQuack(); 113 rubberDuck.PerFormFly(); 114 Console.ReadKey(); 115 } ?

    48521发布于 2020-08-11
  • 来自专栏后端架构师

    设计模式之-降龙十八掌

    适配器模式 首先我们从制造一个屏幕模拟器开始,模拟鸭子叫,根据需求我们先定义 Quackable接口,然后分别定义MallarDuck、RedheadDuck、RubberDuck、DuckCall等不同的鸭子实现呱呱叫接口 @Override public void quack() { System.out.println("红头鸭呱呱叫..."); } } public class RubberDuck redheadDuck = new RedheadDuck(); Quackable mallarDuck = new MallarDuck(); Quackable rubberDuck = new RubberDuck(); Quackable duckCall = new DuckCall(); GooseAdapter gooseAdapter = = new QuackCounter(new RubberDuck()); Quackable duckCall = new QuackCounter(new DuckCall());

    66910发布于 2020-03-24
  • 来自专栏爪哇缪斯

    趣解设计模式之《会飞的橡皮鸭》

    System.out.println("红头鸭的外貌特征"); } } /** * @description 橡皮鸭 * @author: muse **/ public class RubberDuck author: muse **/ public class StrategyTest { public static void main(String[] args) { Duck rubberDuck = new RubberDuck(); // 生成橡皮鸭 rubberDuck.display(); rubberDuck.performFly(); System.out.println("-----------对橡皮鸭进行改造,让它能飞起来------------"); rubberDuck.setFlyBehavior (new FlyWithWings()); // 更换会飞的算法族 rubberDuck.performFly(); } } 今天的文章内容就这些了: 写作不易,笔者几个小时甚至数天完成的一篇文章

    31920编辑于 2023-09-20
  • 来自专栏爪哇缪斯

    趣解设计模式之《会飞的橡皮鸭》

            System.out.println("红头鸭的外貌特征");    }}/** * @description 橡皮鸭 * @author: muse **/public class RubberDuck author: muse **/public class StrategyTest {    public static void main(String[] args) {        Duck rubberDuck  = new RubberDuck(); // 生成橡皮鸭        rubberDuck.display();        rubberDuck.performFly();                 System.out.println("-----------对橡皮鸭进行改造,让它能飞起来------------");                rubberDuck.setFlyBehavior (new FlyWithWings()); // 更换会飞的算法族        rubberDuck.performFly();    }}今天的文章内容就这些了:写作不易,笔者几个小时甚至数天完成的一篇文章

    41121编辑于 2023-09-19
  • 来自专栏前端达人

    分享7个和 ChatGPT 相关的 VSCode 插件

    itemName=Codeium.codeium 5、Rubberduck Rubberduck是一个让您能够与代码和软件开发话题进行交流的扩展。 Rubberduck提供以下主要功能: 与代码交流:Rubberduck允许您与代码进行对话,提出问题或讨论开发话题。您可以寻求建议、解释和指导,以加强对代码的理解和开发过程的改进。 代码解释和测试生成:Rubberduck支持解释代码的功能,可以帮助您理解复杂的代码逻辑。此外,它还可以生成测试代码,帮助您进行单元测试和代码覆盖率的提升。 itemName=Rubberduck.rubberduck-vscode 6、OpenAI OpenAI是一个优秀的工具,可以让您直接从代码编辑器中访问OpenAI的功能。

    8K40编辑于 2023-08-31
  • 来自专栏热爱IT

    PHP设计模式之策略模式 转

    function setFlyBehavior(FlyBehavior $behavior){         $this->_flyBehavior = $behavior;     } }   class RubberDuck extends Duck{ } // Test Case $duck = new RubberDuck();   /*  想让鸭子用翅膀飞行 */ $duck->setFlyBehavior(new

    53610发布于 2019-04-10
  • 来自专栏C/C++基础

    设计模式 (一)——策略模式(Strategy,行为型)

    按照前面的思维,我们顺其自然的让新的类RubberDuck继承基类Duck,但是橡皮鸭不能飞,叫的声音也和绿头野鸭和红头鸭不一样,于是我们需要在RubberDuck重写基类的fly和quack方法。 class RubberDuck:public Duck{ public: virtual void fly(){ cout<<"我不能飞行"<<endl; } 将行为类对象作为鸭子类的数据成员,并提供动态改变行为的方法,具体实现如下: //橡胶鸭类 class RubberDuck { private: FlyBehavior* flyBehavior ; QuackBehavior* quackBehavior; public: RubberDuck() { flyBehavior = new FlyNoWay();

    61420发布于 2018-08-03
  • 来自专栏Dormanta

    策略模式

    }}class RedHeadDuck : public Duck{public: virtual void display(void){ // 外观是红头 }}class RubberDuck 为了避免这种情况,需要在RubberDuck子类中将fly()方法重写。当前情况下这么修改是可以接受的。 public Duck{public: RedHeadDuck(){ pFlyBehavior = new FlyWithWings; } // ...}class RubberDuck : public Duck{public: RubberDuck(){ pFlyBehavior = new FlyNoWay; } // ...}在构造函数中,不同的子类获得了对应的

    38720编辑于 2022-11-16
  • 来自专栏Rust语言学习交流

    北海 - Rust与面向对象(三)

    .>; type RubberDuck = Duck<...>; type DecoyDuck = Duck<...>; /// 动多态因“类型丢失”,只能使用NewType,并在NewType中约束 struct MallardDuck(DynamicDuck); struct RubberDuck(DynamicDuck); struct DecoyDuck(DynamicDuck); /// 为了解决这个问题,各种奇招就来了,如不管三七二十一,先把捕猎行为塞进Duck中,管其它鸭子会不会错用呢;或者,为橡皮鸭RubberDuck、木头鸭WoodDuck也实现个假的捕猎,这样“捕猎”就又符合新的策略了 但我不建议普通的策略模式这样实现,将Fly和Quack组合起来的Duck,不再是飞行策略实现的一种变体,要是RubberDuck也能因满足Fly特型约束,再次充当Duck自己的“翅膀”F,组合成一个新Duck

    29610编辑于 2023-12-30
  • 来自专栏技术赋能学术

    Head First设计模式——复合模式

    1 public class RubberDuck : Quackable 2 { 3 public void Quack() 4 { 5 20 21 public override Quackable CreateRubberDuck() 22 { 23 return new RubberDuck public override Quackable CreateRubberDuck() 39 { 40 return new QuackCounter(new RubberDuck

    57030发布于 2020-08-11
  • 来自专栏用户4352451的专栏

    【设计模式】变化和不变化的代码进行分离day01

    游泳高手"); } } package 设计模式; /** * @author yuanxindong * @date 2020/7/4 12:55 上午 */ public class RubberDuck

    61430发布于 2020-08-26
  • 来自专栏程序员小跃

    设计模式之工厂模式(一)

    MallardDuck(); } else if (hunting) { duck = new DecoyDuck(); } else if (inBathTub) { duck = new RubberDuck

    49430发布于 2019-12-25
  • 来自专栏机器人课程与技术

    ROS之choro功能包

    Downloads cached for licensed users livecontactsview 1.26 [Approved] Downloads cached for licensed users rubberduck

    6.4K20发布于 2021-12-02
领券