设计模式之封装,学习笔记

  封装即把代码隐藏起来,why?好好的为什么要隐藏起来,这里指的隐藏并非真的隐藏,而是把一些复杂的代码给包裹起来,留下的是一个接口,到时候要用的时候直接调用这个接口即可,这样那些不是干技术的也可以轻松上手了。有时我们还会把一些私有属性属性给封装起来,如下:

function fn(){
  var _name = ‘javascript‘;
  return {getName:function(){
    return _name;
  }};
}
fn().getName(); //javascript

var f = (function(){
  var _name = ‘javascript‘;
  return function(){
    return _name;
};
}());

var f = null;
(function(){
  var _name = ‘javascript‘;
  f = _name;
}())
alert(f); //javascript

  这样外部就无法修改里面的_name值了,如果想让外部修改可以这样。

var f = (function(){
  var _name = ‘javascript‘;
  return {
    getName:function(){
      return _name;
    },
    setName:function(name){
      _name = name;
    }
  };
}());

f.getName(); //javascript
f.setName(‘CSS3‘);
f.getName(); //CSS3

  封装还有一点就是把将来可能会发生变化的给封装起来,另外就是它不在乎里面的代码是怎么实现的,它只关心你留给他的接口是否有发生变化。如下就是一个封装变化点。

function getByClass(className){
  var tags = document.getElementsByTagName(‘*‘);
  var arr = [];
  var t = null;
  for(var i=0,len=tags.length;i<len;i++){
    t = tags[i].className.split(‘ ‘);
    for(var k=0;k<t.length;k++){
      if(t[k]===className){
        arr.push(tags[i]);
        break;
      }
    }
  }
  return arr;
}
getByClass(‘className‘);

  这段代码的意思是通过class来获取元素,大家知道IE低版本浏览器不兼容document.getElementsByClassName。所以我们进行了封装,使用的话就只需要通过getByClass来获取,假如有一天浏览器都兼容document.getElementsByClassName这个方法的话可以这样。

function getByClass(className){
  return document.getElementsByClassName(className);
}
getByClass(‘li‘);

使用方法和上面还是一样的,这就是封装变化点,不改变接口,只改变内部细节。

时间: 2024-08-01 10:45:11

设计模式之封装,学习笔记的相关文章

设计模式--单例模式(学习笔记)

定义:      单例模式:保证一个类只有一个实例,并且提供一个访问它的全局访问点.(<大话设计模式定义>): 单例模式分为两种: 1>饿汉式单例类:自己被加载时就将自己实例化. 例子:       private SingleExample() {           } private static SingleExample singleExample=new SingleExample(); @Override protected SingleExample getInstanc

[GeekBand] 设计模式之观察者模式学习笔记

本文参考文献::GeekBand课堂内容,授课老师:李建忠 :网络资料: http://blog.csdn.net/hguisu/article/details/7556625 本文仅作为自己的学习笔记,不代表权威,因为是初学,有错误烦请大家指正,谢谢. 1.什么是观察者模式,应用场所有哪些? 观察者模式(有时又被称为发布-订阅Subscribe>模式.模型-视图View>模式.源-收听者Listener>模式或从属者模式)是软件设计模式的一种.在此种模式中,一个目标物件管理所有相依于它

jq框架封装学习笔记1-框架介绍与选择器框架

jq框架学习 框架的选择器模块 框架的结构 DOM 基本操作(元素的操作) 事件处理 属性操作 样式操作 简单动画 简要分析 jq 框架 jq是模块化的,是一个以代码集合和功能为中心的模块 Sizzle 选择器引擎,非常常用的选择器引擎 jq 的整体结构: (function( window, undefined ) { // })( window ); 为什么使用这个结构? 将所有内容都封装了一个沙箱之中,对外只暴露 jQuery 和 $ 对象,避免了变量名的污染 为什么传入参数? 考虑到变量

[GeekBand] 设计模式——工厂模式学习笔记

 本文参考文献:GeekBand课堂内容,授课老师:李建忠 :大话设计模式 其余的模式方法请自行查看Geekband相关课程,在此不累述. 这周的课题是: 针对DrawingSystem中的基类Shape和各个子类Line.Rec.Circle.为支持更多的形状子类,请使用某种模式来支持灵活地创建它们.使用松耦合面向对象设计方法和思想,可使用伪码表示设计. 课程中提到了四种模式,“工厂方法”.“抽象工厂”.“原型模式”.“构建器”模式.最后聚焦在了“工厂方法”和“抽象工厂”这两种方法,那么第一个

设计模式之禅学习笔记

现在比较熟悉的设计模式有: slf4j=>单例模式,工厂模式,门面(外观)模式 工厂模式 vs 抽象工厂模式 工厂模式 接口,接口实现类,工厂类 抽象工厂模式 接口,借口实现类,工厂抽象类,具体的工厂实现类.红色句子是二者唯一的区别 工厂模式 vs 建造者模式 工厂模式是生产整个产品 建造者模式是重点强调建造的过程 模板模式 spring的很多类都应用了这种模式 比如一个抽象类,有很多具体的实现类继承这个抽象类 抽象类跟接口相比,优点是如果在抽象类中添加新的具体实现方法,不会影响之前已经继承的实

JDBC封装学习笔记(二)---面向对象的JDBC

上一篇是针对连接数据库以及释放数据库资源进行的基本封装练习,这一次就是实战操作了,实际的操作一张表,数据表的信息如下图所示 一 .添加.更新.删除其实都是用的executeUpdate()方法,所以除了SQL语句不同,其他的基本一样,这里写的是一个添加操作: // 添加一个运动员,传入一个运动员对象 public void addPlayers(Players player) { // 给出一个SQL String sql = "insert into userinfo" + &quo

java/android 设计模式学习笔记(14)---外观模式

这篇博客来介绍外观模式(Facade Pattern),外观模式也称为门面模式,它在开发过程中运用频率非常高,尤其是第三方 SDK 基本很大概率都会使用外观模式.通过一个外观类使得整个子系统只有一个统一的高层的接口,这样能够降低用户的使用成本,也对用户屏蔽了很多实现细节.当然,在我们的开发过程中,外观模式也是我们封装 API 的常用手段,例如网络模块.ImageLoader 模块等.其实我们在开发过程中可能已经使用过很多次外观模式,只是没有从理论层面去了解它. 转载请注明出处:http://bl

java/android 设计模式学习笔记(10)---建造者模式

这篇博客我们来介绍一下建造者模式(Builder Pattern),建造者模式又被称为生成器模式,是创造性模式之一,与工厂方法模式和抽象工厂模式不同,后两者的目的是为了实现多态性,而 Builder 模式的目的则是为了将对象的构建与展示分离.Builder 模式是一步一步创建一个复杂对象的创建型模式,它允许用户在不知道内部构建细节的情况下,可以更精细地控制对象的构造流程.一个复杂的对象有大量的组成部分,比如汽车它有车轮.方向盘.发动机.以及各种各样的小零件,要将这些部件装配成一辆汽车,这个装配过

java/android 设计模式学习笔记(一)---单例模式

前段时间公司一些同事在讨论单例模式(我是最渣的一个,都插不上嘴 T__T ),这个模式使用的频率很高,也可能是很多人最熟悉的设计模式,当然单例模式也算是最简单的设计模式之一吧,简单归简单,但是在实际使用的时候也会有一些坑. PS:对技术感兴趣的同鞋加群544645972一起交流 设计模式总目录 java/android 设计模式学习笔记目录 特点 确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例. 单例模式的使用很广泛,比如:线程池(threadpool).缓存(cache).对

大话设计模式学习笔记——面向对象基础

前言 好记性不如烂"笔头"系列--大话设计模式学习笔记 目录 面向对象基础 面向对象基础 什么是类与实例 一切事物皆为对象,即所有的东西老师对象,对象就是可以看到.感觉到.听到.触摸到.尝到.或闻到的东西.准确地说,对象是一个自包含的实体,用一组可识别的特性和行为来标识.面向对象编程,英文叫 Object-Oriented Programming,其实就是针对对象来进行编程的意思.类就是具有相同属性和功能的对象的抽象集合.实例就是一个真实的对象.比如我们属于'人'类,而个人就是'人'类