javascript 写农场迭代

/**
 * 农场一头小母牛
 * 每年生头小母牛
 * 母牛五岁产母牛
 * 二十年上多少牛
 */

划分程序,母牛只管自己的年龄能不能产牛仔,母牛是model同时也是工厂

农场只管养牛,收获新牛。

一年一个循环,农场养牛,牛产子

/**
 * [Decode error - output not utf-8]
农场有71只小母牛
母牛0,20岁
母牛1,14岁
母牛2,13岁
母牛3,12岁
母牛4,11岁
母牛5,10岁
母牛6,9岁
母牛7,8岁
母牛8,8岁
母牛9,7岁
母牛10,7岁
母牛11,7岁
母牛12,6岁
母牛13,6岁
母牛14,6岁
母牛15,6岁
母牛16,5岁
母牛17,5岁
母牛18,5岁
母牛19,5岁
母牛20,5岁
母牛21,4岁
母牛22,4岁
母牛23,4岁
母牛24,4岁
母牛25,4岁
母牛26,4岁
母牛27,3岁
母牛28,3岁
母牛29,3岁
母牛30,3岁
母牛31,3岁
母牛32,3岁
母牛33,3岁
母牛34,2岁
母牛35,2岁
母牛36,2岁
母牛37,2岁
母牛38,2岁
母牛39,2岁
母牛40,2岁
母牛41,2岁
母牛42,2岁
母牛43,1岁
母牛44,1岁
母牛45,1岁
母牛46,1岁
母牛47,1岁
母牛48,1岁
母牛49,1岁
母牛50,1岁
母牛51,1岁
母牛52,1岁
母牛53,1岁
母牛54,1岁
母牛55,0岁
母牛56,0岁
母牛57,0岁
母牛58,0岁
母牛59,0岁
母牛60,0岁
母牛61,0岁
母牛62,0岁
母牛63,0岁
母牛64,0岁
母牛65,0岁
母牛66,0岁
母牛67,0岁
母牛68,0岁
母牛69,0岁
母牛70,0岁
[Finished in 0.9s]
 */
/**
 * 农场一头小母牛
 * 每年生头小母牛
 * 母牛五岁产母牛
 * 二十年上多少牛
 */

//////////////////////////////////////////////////////////////
/// 母牛
var Boosy = function() {
    var self = this;
    self.age = 0;
};
Boosy.prototype = {};
Boosy.prototype.constructor = Boosy;

Boosy.prototype.live = function() {
    var self = this;
    self.age++;
};

Boosy.prototype.birthBaby = function() {
    var self = this;
    if (self.age >= 5) {
        return new Boosy();
    };
    return null;
};


//////////////////////////////////////////////////////////////
/// 农场
var Farm = function() {
    var self = this;
    self.boosies = [];
};
Farm.prototype = {};
Farm.prototype.constructor = Farm;

Farm.prototype.add = function(boosy) {
    var self = this;
    self.boosies.push(boosy);
};

Farm.prototype.runBussiness = function() {
    var self = this;
    var pool = [];
    self.boosies.forEach( function(element, index) {
        var boosyBaby = element.birthBaby();
        if(boosyBaby){
            pool.push(boosyBaby);
        };
        element.live();
    });
    
    pool.forEach( function(element, index) {
        self.boosies.push(element);
    });
    pool = [];
};

Farm.prototype.count = function() {
    var self = this;
    console.log("农场有"+self.boosies.length+"只小母牛");
    self.boosies.forEach( function(element, index) {
        console.log('母牛'+index+","+element.age+"岁");
    });
};




//////////////////////////////////////////////////////////////
// 测试

var farm = new Farm();
farm.add(new Boosy());

for (var i = 0; i < 20; i++) {
    farm.runBussiness();
};

farm.count();

/**
 * [Decode error - output not utf-8]
农场有71只小母牛
母牛0,20岁
母牛1,14岁
母牛2,13岁
母牛3,12岁
母牛4,11岁
母牛5,10岁
母牛6,9岁
母牛7,8岁
母牛8,8岁
母牛9,7岁
母牛10,7岁
母牛11,7岁
母牛12,6岁
母牛13,6岁
母牛14,6岁
母牛15,6岁
母牛16,5岁
母牛17,5岁
母牛18,5岁
母牛19,5岁
母牛20,5岁
母牛21,4岁
母牛22,4岁
母牛23,4岁
母牛24,4岁
母牛25,4岁
母牛26,4岁
母牛27,3岁
母牛28,3岁
母牛29,3岁
母牛30,3岁
母牛31,3岁
母牛32,3岁
母牛33,3岁
母牛34,2岁
母牛35,2岁
母牛36,2岁
母牛37,2岁
母牛38,2岁
母牛39,2岁
母牛40,2岁
母牛41,2岁
母牛42,2岁
母牛43,1岁
母牛44,1岁
母牛45,1岁
母牛46,1岁
母牛47,1岁
母牛48,1岁
母牛49,1岁
母牛50,1岁
母牛51,1岁
母牛52,1岁
母牛53,1岁
母牛54,1岁
母牛55,0岁
母牛56,0岁
母牛57,0岁
母牛58,0岁
母牛59,0岁
母牛60,0岁
母牛61,0岁
母牛62,0岁
母牛63,0岁
母牛64,0岁
母牛65,0岁
母牛66,0岁
母牛67,0岁
母牛68,0岁
母牛69,0岁
母牛70,0岁
[Finished in 0.9s]
 */
View Code
原文地址:https://www.cnblogs.com/Again/p/5284859.html