zoukankan      html  css  js  c++  java
  • JavaScript 模拟策略模式

    /**
     * 模拟一个接口,其方法会抛出异常;
     */
    function FlyInter () {}
    FlyInter.prototype.fly = function() {
        throw '实现这个接口';
    };
    /**
     * 实现一个fly noway的方法;
     */
    function FlyNoWays() {}
    FlyNoWays.prototype.fly = function() {
        console.log('fly noways');
    };
    /**
     * 实现一个fly with Wings的方法;
     */
    function FlyWithWings () {}
    FlyWithWings.prototype.fly = function() {
        console.log('fly with wings');
    };
    /**
     * 鸭子超类;构造函数中设置了一个接口;
     */
    function Duck() {
        this.flyI = new FlyInter();
    }
    Duck.prototype.swim = function() {
        console.log('duck can swim');
    };
    /**
     * fly方法调用flyI接口的fly方法;
     */
    Duck.prototype.fly = function() {
        this.flyI.fly();
    };
    /**
     * RubberDuck继承Duck;构造函数中设置自己的fly对象;
     */
    function RubberDuck () {
        this.flyI = new FlyNoWays();
    }
    RubberDuck.prototype = new Duck();
    RubberDuck.prototype.constructor = RubberDuck;
    delete RubberDuck.prototype.flyI;
    
    var rDuck = new RubberDuck();
    //直接调用Duck中的fly()方法即可;
    rDuck.fly();
  • 相关阅读:
    P3368 【模板】树状数组 2
    P3374 【模板】树状数组 1
    BZOJ 2654
    BZOJ 1016
    BZOJ 4870
    BZOJ 4868
    BZOJ 1503
    P3379 【模板】最近公共祖先(LCA)
    雅礼2017国庆1-1
    使用 CefSharp 网页显示问题
  • 原文地址:https://www.cnblogs.com/stono/p/4379811.html
Copyright © 2011-2022 走看看