JsDesignMode第二篇

本文深入探讨了创建型设计模式,包括简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式和单例模式。每种模式都详细介绍了其原理、应用场景及其实现方式。

创建型设计模式
    处理对象创建的设计模式,控制对象的创建来避免基本对象创建时
    可能导致设计上的问题或增加设计上的复杂度
1.简单工厂模式
       1.1也称为静态工厂方法
             由一个工厂对象决定创建某一种产品对象类的实例,创建同一类对象
       1.2类太多,提供一个
            

 //封装在一个函数中,只需要记住这个函数,不需要知道基类
 //这个函数被称为工厂函数,这个模式叫简单工厂模式
        var LoginAlert = function(text){
            this.content = text;
        }
        LoginAlert.prototype.show = function(){
            //显示警示框
        }
        var LoginConfirm = function(text){
            this.content = text;
        }
        LoginConfirm.prototype.show = function(){
            //显示确认框
        }
        var LoginPrompt = function(text){
            this.content = text;
        }
        LoginPrompt.prototype.show = function(){
            //显示提示框
        }
        工厂:
        var PopFactory = function(name){
            switch(name){
                case 'alert':
                    return new LoginAlert();
                case 'confirm':
                    return new LoginConfirm();
                case 'prompt':
                    return new LoginPrompt();
            }
        }


       1.3.上面是对不同的类进行实例化,简单工厂模式的理念是创建对象
                     提取相似的东西,不相似的针对性处理
     

   function createPop(type, text){
            var o = new Object();
            o.content = text;
            o.show = function(){
                //显示方法
            };
            if(type == 'alert'){
                //警示框
            }
            if(type == 'confirm'){
                //确认框
            }
            if(type == 'prompt'){
                //提示框
            }
        }


     1.4区别
                 第一种是通过类实例化来创建
                       继承同一父类,父类原型上的方法是可以共用的
                第二种是创建一个新对象然后包装增强其属性和功能来实现
                      创建了一个新个体,方法也就不能共用了
2.工厂方法模式
        2.1对产品类的抽象使其创建业务主要负责用于创建多类产品的实例
             只需要添加一个类
             看作一个实例化对象的工厂类,将创建对象的基类放在工厂方法类的原型当中
             安全模式:避免错误,比如未使用new
      

  var Factory = function(type, content){
            if(this instanceof Factory){
                var s = new this[type](content);
                return s;
            }else{
                return new Factory(type, content);
            }
        }
        Factory.prototype = {
            Java : function(content){
                //...
            },
            JavaScript : function(content){
                //...
            }
        }; 

 
3.抽象工厂模式

         对类的工厂抽象使其业务用于对产品类族的创建
4.建造者模式
         将一个复杂对象的构建层与其表示层相互分离,同样的构建过程可采用不同的表示
         关心于创建这个对象的整个过程,甚至每一个细节
       

var Human = function(param){
            this.skill = param && param.skill || '保密';
            this.hobby = param && param.hobby || '保密';
        }
        Human.prototype = {
            getSkill : function(){
                return this.skill;
            },
            getHobby : function(){
                return this.hobby;
            }
        }
        var Named = function(name){
            var that = this;
            (function(name, that){
                that.wholeName = name;
                if(name.indexOf('') > -1){
                    that.FirstName = name.slice(0, name.indexOf(''));
                    that.SecondName = name.slice(name.indexOf(''));
                }
            })(name, that);
        }
        var Work = function(work){
            var that = this;
            (function(work, that){
                switch(work){
                    case 'code':
                        that.work = '工程师';
                        that.workDescript = '每天编程';
                        break;
                    case 'UI':
                    case 'UE':
                        that.work = '设计师';
                        that.workDescript = '设计更似一种艺术';
                        break;
                    default:
                        that.work = work;
                        that.workDescript = 'NOT FOUND';
                }
            })(work, that);
        }
        Work.prototype.changeWork = function(work){
            this.work = work;
        }
        Work.prototype.changeDescript = function(setence){
            this.workDescript = sentence;
        }
        //建造者类
        var Person = function(name, work){
            var _person = new Human();
            _person.name = new Named(name);
            _person.work = new Work(work);
            return _person;
        }


5.原型模式
        用原型实例指向创建对象的类,使用于创建新的对象的类共享原型对象的属性和方法
        将可复用、可共享、耗时大的从基类中提出来然后放在原型之中
        然后子类将方法和属性继承下来,对于那些需要重写的方法进行重写
        既有了自己的属性和方法又有了原型的属性和方法
6.单例模式
        只允许实例化一次的对象类,只存在一个对象
        为一个对象规划一个命名空间,来井井有条的管理对象上的属性和方法
        为了代码易懂,采用语义化,但是能用的词是有限的,很容易重复
        可以使用命名空间来约束每个人定义的变量
        比如常见的jQuery使用它的方法必须使用它的命名空间
   

     var A = {
            Util : {
                util_method1 : function(){},
                util_method2 : function(){}
                //...
            },
            Tool : {
                tool_method1 : function(){},
                tool_method2 : function(){}
                //...
            },
            Ajax : {
                get : function(){},
                post : function(){}
                //...
            }
        }

 

Matlab基于粒子群优化算法及鲁棒MPPT控制器提高光伏并网的效率内容概要:本文围绕Matlab在电力系统优化与控制领域的应用展开,重点介绍了基于粒子群优化算法(PSO)和鲁棒MPPT控制器提升光伏并网效率的技术方案。通过Matlab代码实现,结合智能优化算法与先进控制策略,对光伏发电系统的最大功率点跟踪进行优化,有效提高了系统在不同光照条件下的能量转换效率和并网稳定性。同时,文档还涵盖了多种电力系统应用场景,如微电网调度、储能配置、鲁棒控制等,展示了Matlab在科研复现与工程仿真中的强大能力。; 适合人群:具备一定电力系统基础知识和Matlab编程能力的高校研究生、科研人员及从事新能源系统开发的工程师;尤其适合关注光伏并网技术、智能优化算法应用与MPPT控制策略研究的专业人士。; 使用场景及目标:①利用粒子群算法优化光伏系统MPPT控制器参数,提升动态响应速度与稳态精度;②研究鲁棒控制策略在光伏并网系统中的抗干扰能力;③复现已发表的高水平论文(如EI、SCI)中的仿真案例,支撑科研项目与学术写作。; 阅读建议:建议结合文中提供的Matlab代码与Simulink模型进行实践操作,重点关注算法实现细节与系统参数设置,同时参考链接中的完整资源下载以获取更多复现实例,加深对优化算法与控制系统设计的理解。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值