zoukankan      html  css  js  c++  java
  • JavaScript设计模式-13.组合模式

      1 <!DOCTYPE html>
      2 <html>
      3     <head>
      4         <meta charset="UTF-8">
      5         <title>Javascript高级语法13-组合模式</title>
      6     </head>
      7     <body>
      8         <script>
      9             /*组合模式:
     10             */
     11             
     12             function demo1(){
     13                 /*需求: 有一个学校,有两个班(1班,2班),
     14                  * 每个班分两个小组(1班1组,1班2组,2班1组,2班2组)
     15                  * 学校计算机教室有限,每一个小组分着来上课,考试时候大家一起考
     16                  */
     17                 //不用组合模式
     18                 var school = function(name){
     19                     this.name = name;
     20                     var classes = new Array();
     21                     this.addClass = function(cla){
     22                         classes.push(cla);
     23                         return this;
     24                     }
     25                     this.getClasses = function(){
     26                         return classes;
     27                     }
     28                 }
     29                 //班级类
     30                 var classes = function(name){
     31                     this.name = name;
     32                     var groups = new Array();
     33                     this.getGroups = function(){
     34                         return groups;
     35                     }
     36                     this.addGroup = function(group){
     37                         groups.push(group);
     38                         return this;
     39                     }
     40                 }
     41                 //
     42                 var group = function(name){
     43                     this.name = name;
     44                     var students = new Array();
     45                     this.getStudents = function(){
     46                         return students;
     47                     }
     48                     this.addStudent = function(student){
     49                         students.push(student);
     50                         return this;
     51                     }
     52                 }
     53                 //学生类
     54                 var student = function(name){
     55                     this.name = name;
     56                     this.goToClass = function(){
     57                         document.write(this.name+" 去上课!")
     58                     }
     59                     this.finishClass = function(){
     60                         document.write(this.name+" 下课!")
     61                     }
     62                 }
     63                 //测试
     64                 var a = new student("a");
     65                 var b = new student("b");
     66                 var c = new student("c");
     67                 var d = new student("d");
     68                 var e = new student("e");
     69                 var f = new student("f");
     70                 var g = new student("g");
     71                 var h = new student("h");
     72                 var one = new classes("一班");
     73                     var  oneOne = new group("一班一组");
     74                         oneOne.addStudent(a).addStudent(b);
     75                     var  oneTwo = new group("一班二组");
     76                         oneTwo.addStudent(c).addStudent(d);
     77                     one.addGroup(oneOne).addGroup(oneTwo);
     78                 var two = new classes("二班");
     79                     var  twoOne = new group("二班一组");
     80                         twoOne.addStudent(e).addStudent(f);
     81                     var  twoTwo = new group("二班二组");
     82                         twoTwo.addStudent(g).addStudent(h);
     83                     two.addGroup(twoOne).addGroup(twoTwo);
     84                 var xuexiao = new school("新学校");
     85                    xuexiao.addClass(one).addClass(two);
     86                    
     87                 //调用  一班一组去上课
     88                 var classes = xuexiao.getClasses();
     89                 for(var i=0;i<classes.length;i++){
     90                     if(classes[i].name == "一班"){                        
     91                         for(var j=0;j<classes[i].getGroups().length;j++){                            
     92                             if(classes[i].getGroups()[j].name == "一班一组"){
     93                                 var s = classes[i].getGroups()[j].getStudents();
     94                                 for(var k=0;k<s.length;k++){
     95                                     s[k].goToClass();
     96                                 }
     97                             }
     98                         }
     99                     }
    100                 }
    101                 //这种方法不适合业务扩展,效率非常低
    102             }
    103 //            demo1();
    104             /*组合模式:
    105              * 1.组合模式中把对象分为两种(组合对象和叶子对象)
    106              * 2.组合对象和叶子对象实现同一批操作
    107              * 3.对组合对象执行的操作可以向下传递到叶子节点进行操作
    108              * 4.这样就会弱化类与类之间的耦合
    109              * 5.常用的手法就是把对象组合成属性结构的对象。
    110              * 组合是离不开递归的。
    111              */
    112             
    113         </script>
    114     </body>
    115 </html>
  • 相关阅读:
    第八次作业 8、特征选择
    第六次作业 6.逻辑归回
    MySQL5.7详细配置教程
    MySQL5.1安装与卸载教程
    常用的正则表达式
    MongoDB安装以及配置教程
    机器学习:4.K均值算法--应用
    利用Python制作二维码
    机器学习:15 手写数字识别-小数据集
    机器学习:14 深度学习-卷积
  • 原文地址:https://www.cnblogs.com/chengyunshen/p/7191794.html
Copyright © 2011-2022 走看看