zoukankan      html  css  js  c++  java
  • js---26组合模式

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
            <title>Untitled Document</title>
            <script type=text/javascript charset=utf-8 src=../commons/CommonUtil.js ></script>
            <script>
                
                // 组合模式 
                /*
                 * 场景模拟:
                 *  -> 公司 
                 *            -> 财务部门
                 *                        -> 张一
                 *                        -> 张二
                 *                        -> 张三
                 *            -> 销售部门
                 *                        -> 张四
                 *                        -> 张五
                 *                        -> 张六
                 *    
                 *        实际的任务具体是落实到人上去实施的 也就是说只有人才具有具体的方法实现
                 *            
                 */            
                 
                 
                 var Org = function(name){
                      this.name = name ; 
                     this.depts = [] ;
                 };
                 Org.prototype = {
                     constructor:Org , 
                    addDepts:function(child){//形参不写数据类型
                        this.depts.push(child);//this一般指的是Org对象
                        return this ;
                    } , 
                    getDepts:function(){
                        return this.depts;
                    }
                 };
                 
                 
                 var Dept = function(name){
                      this.name = name ; 
                     this.persons = [] ;
                 };
                 Dept.prototype = {
                     constructor:Dept , 
                    addPersons: function(child){
                        this.persons.push(child);
                        return this ;
                    } , 
                    getPersons:function(){
                        return this.persons;
                    }
                 };
                 
                 var Person = function(name){
                      this.name = name ; 
                 };
                 Person.prototype = {
                     constructor : Person ,
                    hardworking : function(){
                        document.write(this.name + '...努力工作!');
                    } ,
                    sleeping : function(){
                        document.write(this.name + '...努力睡觉!');
                    }
                 };
                 
                 
                 var p1 = new Person('张1');
                 var p2 = new Person('张2');
                 var p3 = new Person('张3');
                 var p4 = new Person('张4');
                 var p5 = new Person('张5');
                 var p6 = new Person('张6');
                 
                 var dept1 = new Dept('开发部门');
                 dept1.addPersons(p1).addPersons(p2).addPersons(p3);
                 var dept2 = new Dept('销售部门');
                 dept2.addPersons(p4).addPersons(p5).addPersons(p6);
                 
                 var org = new Org('bjsxt');
                 org.addDepts(dept1).addDepts(dept2);
                 
                 // 需求: 具体的让一个人(张3)去努力工作
                 //org.getDepts()
                 org.hardworking('开发部门');
                 for(var i = 0 ,depts = org.getDepts(); i<depts.length;i++ ){//for循环中也不写数据类型
                        for(var j = 0 ,persons = depts[i].getPersons(); j < persons.length ; j++){
                            if(persons[j].name === '张6'){
                                persons[j].hardworking();
                            }
                        }
                 }
                
                
                
                
                
            </script>
        </head>
        <body>
        </body>
    </html>
  • 相关阅读:
    git push :推送本地更改到远程仓库的三种模式
    GIT版本库回滚【图文版】
    微服务架构的分布式事务解决方案
    断路器-Hystrix的深入了解
    Elasticsearch顶尖高手系列课程推荐
    Dockerfile分离构建LNMP环境部署wordpress
    ELK 聚合查询
    tomcat日志采集
    ELK采集之nginx 之高德地图出城市IP分布图
    Elasticsearch 安装与集群配置
  • 原文地址:https://www.cnblogs.com/yaowen/p/6883763.html
Copyright © 2011-2022 走看看