• javascript设计模式学习之十七——程序设计原则与面向接口编程


    一、编程设计原则

    1)单一职责原则(SRP):

    这里的职责是指“引起变化的原因”;单一职责原则体现为:一个对象(方法)只做一件事。

    事实上,未必要在任何时候都一成不变地遵守原则,实际开发中,因为种种原因违反SRP的情况并不少见,比如jQuery中的attr方法,既负责赋值,又负责取值。这对于jQuery的维护者来说,带来了一些困难,然而对于jQuery的用户来说,则方便了使用。

    因此很多时候,需要在方便性和稳定性之间有一些取舍。

    2)最少知识原则(LKP):

    最少知识原则是说,一个软件实体应当尽可能少地与其他实体发生相互作用。这里的软件实体是一个广义的概念,不仅包括对象,也包括系统、类、模块、函数、变量等。

    最少知识原则体现最多的地方是中介者模式和外观模式。与封装不同的是,封装侧重于体现数据的隐藏,而最少知识原则则侧重于减少对象之间的联系。

    3)开放—封闭原则(OCP):

    在面向对象程序设计中,开放—封闭原则是最重要的一项原则。几乎所有的设计模式的初衷都是为了满足这一原则,该原则定义如下:

    软件实体(类、模块、函数)等可以扩展,但不可以被修改。即:当需要变动 一个程序的功能或者给这个程序增加新功能的时候,可以通过增加代码的方式,但是不允许更改程序的源代码。

    二、接口和面向接口编程

    接口的含义有很多:

    1)通常说一个库对外提供了某某API接口。这里的接口是指通过主动暴露的接口来通信,可以隐藏软件系统内部的工作细节。

    2)第二种接口是指某些语言提供的关键字,如java中的interface;

    3)第三种是指“面向接口编程”中的接口,这里的接口体现的更为抽象,指的是对象能响应的请求的集合。

    2.1 java中的面向接口编程:

    在java中,面向接口编程通常采用的方法有两种:1)抽象类;2)interface

    java中的抽象类主要有两个作用:1)向上转型,实现多态;2)建议一些契约;

    java中的interface也可以达到同样的效果,虽然很多人在实际使用中刻意区分抽象类和interface,但是实际上interface也是继承的一种方式,叫做接口继承。interface同样可以用于向上转型和订立契约。

    2.2 javascript中的面向接口编程

    对于javascript而言,因为javascript是一门动态的语言,类型本身就是一个模糊的概念,不需要利用抽象类或者interface给对象进行“向上转型”,或者说,是天生可以向上转型的。即在动态类型语言中,对象的多态性是与生俱来的。

    因为不需要进行向上转型,因此接口在javascript中的最大作用就退化到了检查对象的规范性。动态语言中广泛采用“鸭子类型”的思想:

    “如果它走起来像鸭子,叫起来也是鸭子,那么它就是鸭子”

    这种思想运用的地方很多,如一个对象如果有length属性,也可以根据数字下标来存取属性,该对象就可以当做数组来使用。一个对象如果有push和pop方法,就能当做栈来使用。

    例如如果利用鸭子类型的思想来判断一个对象是否是数组,方法如下:

    var isArray=function(obj){
        return obj&& typeof obj ==='object'&&typeof obj.length==='number' &&typeof obj.splice==='fucntion';
    };
  • 相关阅读:
    Dos.ORM logo.Net轻量级开源ORM框架 Dos.ORM
    C# FUNC 应用
    WCF教程网址
    C#扩展方法实现 byte[] 输出为HEX字符串形式
    apache配置,禁止指定后缀访问
    IServerChannelSinkProvider
    在服务器端的远程对象中加上抽象工厂的接口和实现类
    pannel加载窗体
    权限框架
    工作周记
  • 原文地址:https://www.cnblogs.com/bobodeboke/p/5733422.html
Copyright © 2020-2023  润新知