封装,即隐藏对象的属性和实现细节,仅对外公开接口。
封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。
封装的目的是增强安全性和简化编程,使用者不必了解具体的实现细节,而只是要通过外部接口,以特定的访问权限来使用类的成员。
面向接口编程的写法,简单的说就是将行为封装分布在各个对象中,并让这些对象自己各自负责自己的行为,这也是面向对象设计的一个优点,就拿页面切换的效果来说,在某一时刻,元素A需要让页面进行切换,那么元素A不需要关心页面是怎么切换的,它只能要调用到一个接口方法能让页面切换就行了。JavaScript中没有抽象类与接口的支持,所以很大程度上实现JavaScript中没有抽象类与接口的支持,所以很大程度上实现封装都是靠闭包去模拟封装都是靠闭包去模拟。
例如:
function Swipe(container){
var width = container.width();
var height = container.height();
var element = container.find(':first');
var slides = element.find('li');
var swipe = {};
//设置ul实际长度
element.css({
width: (width*slides.length)+'px',
height: height
});
//设置每一个li的宽度和高度都等于当前的显示容器的宽和高
$.each(slides, function(index) {
var slide = slides.eq(index);
slide.css({
width: width + 'px',
height: height + 'px'
});
});
swipe.scrollTo = function(x,speed){
element.css({
"transition-timing-function":'linear',
"transition-duration":speed+'ms',
"transform":'translate3d(-'+x+'px,0px,0px'
});
return this;
};
return swipe;
}
页面布局与切换是一个整体,我们想调用切换的时候,并不关心其内部处理的手段,所以我们只需要提供一个可以调用的接口就可以,新建一个Swipe.js文件,内部定义一Swipe工厂方法,内部会产生一个swipe的滑动对象,暴露了scrollTo的接口。封装后,可以定义滚动的对象,滚动的距离,滚动的时间。对象不用关心是怎么切换的,它只需要调用一个切换接口即可。