面向对象编程思想

322 阅读3分钟

       大家好,我是逆战班小丁,今天来给大家简单的说说面向对象的编程思想。

       面向对象是一种编程思想,是一种代码的书写格式;使用面向对象之前为了简化代码,我们是将程序封装为函数的形式来调用,此时函数会有一些小问题:函数内部定义的局部作用域变量,函数外部无法直接调用,并且在函数调用使用时,会占用大量的系统内存,容易造成数据溢出数据泄露,容易被黑客攻击,复杂的程序封装会封装成其他形式,使用面向对象的方式来封装程序。

       那么什么是面向对象的方式呢?

       我们先来说一下对象的优点,首先,对象中,可以定义并且存储多个数据单元以及所有JavaScript支持的数据类型,其次对象中,调用具体的数据很方便,调用数据时,不用考虑数据的顺序,只要键名/属性输入正确即可,还有对象中,可以定义函数,还可以通过函数的this,方便的调用对象本身的数据,这些优点使我们使用面向对象编程思想的前提。

       面向对象的基本思路是:创建一个对象,给这个对象,添加上属性和属性值,还有函数等方法,之后通过操作这个对象,来完成需要的效果,比如:

function createObj(){
	const obj={};
	obj.name='张三';
	obj.age=18;
	obj.addr='北京';
	obj.sex='男';
	obj.funNameAge=function(){
		console.log(this.name,this.age);
	};
	obj.funNameAddr=function(){
		console.log(this.name,this.addr);
	};
	obj.funNameSex=function(){
		console.log(this.name,this.sex);
	};
	obj.funAll=function(){
		console.log(this.name,this.sex,this.age,this.addr);
	};
	return obj;
}
const obj=createObj();
console.log(obj);
obg.funAll();
obj.funNameAge();

       我们是通过函数的方法来来创建对象,然后将这个函数赋值给一个对象,此时我们再调用这个对象时,就可以直接调用函数中存储的数据。

       接下来介绍一下工厂模式。

       所谓的工厂模式,是一种书写函数的语法形式,语法规范,就像工厂中的流水线一样,按照步骤来执行需要的操作:

       步骤1:创建对象;

       步骤2:给对象定义属性和属性值;

       步骤3:给对象添加方法;

       步骤4:定义对象为返回值。

       标准的工厂模式会有对应的参数。

function createDumpling(pi,mian,xian){
	const dumpling={};
	dumpling.pi=pi;
	dumpling.xian=xian;
	dumpling.mian=mian;
	dumpling.huomian=function(){
		console.log(this.mian);
	};
	dumpling.huoxian=function(){
		console.log(this.xian);
	};
	dumpling.bao=function(){
		console.log(this.pi,this.xian,this.mian);
	};
	return dumpling;
};
const baojianzi1=createDumpling('薄皮','白面粉','猪肉大葱');
const baojianzi2=createDumpling('厚皮','玉米粉','鱼香肉丝');
console.log(baojiaozi1);
baojiaozi1.huoxian();
baojiaozi1.huomian();

       使用工厂模式我们就可以给构造函数中添加实参了;

       面向对象编程的优点:

       优点与函数的优点类似:高内聚,低耦合;

       高内聚:将所有需要的程序都定义封装在对象内,对象中存储所有需要的属性,所有需要的方法;

       低耦合:尽量减少特殊程序的执行。

       面向对象编程的特点:

       抽象:通过描述对象共有的特点(属性和属性值),来形同一个对象,这个对象不是一个非常具体实例的内容,是一个抽象化的实例,可能指代很多内容,比如制作饺子,制作包子,制作馅饼,制作馅窝头等,再比如,有皮,有汁,味甜,可以是西瓜、橘子、套、夹心糖等;

       封装:将所有的程序都定义在一个对象中。