一些设计模式的实例

1.单例模式

   class Msg{
    	constructor(){
    		this.ele = document.createElement("div");
    		document.body.appendChild(this.ele);
    	}
    	init(str){
    		this.ele.innerHTML = str;
    	}
    }    	
    	
    	var singleCase = (function(){
        var instance;
        return function(text){
            if(!instance){
                instance = new Msg();
            }
            instance.init(text);
            return instance;            
        }
        })();
//      m1和m2显示的是在同一个盒子里
    var m1 = singleCase("hello");
    var m2 = singleCase("world");
    console.log(m1===m2);//ture

2.组合模式

		
		function computer(){};
		computer.prototype.init = function(){
			console.log("开电脑");
		}
		function phone(){};
		phone.prototype.init = function(){
			console.log("开手机");
		}
		function tv(){};
		tv.prototype.init = function(){
			console.log("开电视");
		}
		
		function zuhe(){
			this.arr = [];
		}
//		用来放所有的对象
		zuhe.prototype.add = function(task){
			this.arr.push(task);
		}
//		当统计好所有对象后开始执行
		zuhe.prototype.action = function(){
			 for(var i = 0;i<this.arr.length;i++){
			 	this.arr[i].init();
			 }
		}
		
		var c = new zuhe();
		c.add(new computer());
		c.add(new phone());
		c.add(new tv());
		c.action();

3.观察者模式

		function Stu(n){
           this.name = n;
           this.type = function(){
               if(Math.random() > 0.5){
                   return "学习";
               }else{
                   return "睡觉";
               }
           }
       }

       function Teac(n){
           this.name = n;
           this.listen = function(t,sn){
               if(t == "学习"){
                   console.log(`${sn}是好孩子`);
               }else{
                   console.log(`给${sn}一巴掌`);
               }
           }
       }

       function Teac2(n){
           this.name = n;
           this.listen = function(t,sn){
               if(t == "学习"){
                   console.log(`嗯嗯...点头离开`);
               }else{
                   console.log(`把${sn}揪起来,叫家长`);
               }
           }
       }

       var s = new Stu("张三");
       var t = s.type();

       var t1 = new Teac("班主任");
       t1.listen(t, s.name);

       var t2 = new Teac2("教导主任");
       t2.listen(t, s.name);
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值