面向对象的程序设计

工厂模式

function createPersonal(name,age,job){

var  o = new Object();

o.name = name;

o.age = age;

o.job = job;

o.sayName = function(){

alert(this.name);

}

return o;

}

var personal1 = createPerson("haha",23,"it");

var personal2 = createPerson("hahaha",23,"it");

构造函数模式

function Person (name,age,job){

this.name = name;

this.age = age;

this.job = job;

this.sayName = function(){

alert(this.name);

}

}

var personal1 = new Person("haha",23,"it");

var personal2 = new Person("hahaha",23,"it");

原型模式

function Person(){

}

Person.prototype.name = "hhahha";

Person.prototype.age = 27;

Person.prototype.sayName = function(){

alert(this.name);

};

var person1 = new Person();

person1.sayName();// hhahha;

注:如果我们在实例中添加了一个属性,而该属性与实例原型中的属性同名,那么我们就在实例中创建给属性,该属性将会屏蔽原型中的那个属性;

person1.name = "hhhhh";

alert(person1.name);// "hhhhh"

注:首先收索的是实例,最后才是原型

组合使用构造函数模式和原型模式

function Person (name,age,job){

this.name = name;

this.age = age;

this.job = job;

this.friends = ["a","b"];

}

Person.proyotype = {

constructor:Person,

sayName:function(){

alert(this.name);

}

}

var person1=new Person("hh",23,"bb");

var person2 = new Person("ss",25,"kk");

person1.friends.push("c");

console.log(person1.friends);//a,b,c

console.log(person2.friends);//a,b

注:构造函数模式用于定义实例属性,原型用于定义方法和共享的属性

这种方式目前使用最广泛的一种,认同度最高的

动态原型模式

function Person(ame,age,job){

//属性

this.name = name;

this.age = age;

this.job = job;

//方法

if(typeof this.sayName != "function"){

Person.prototype.sayaName = function(){

alert(this.name);

}

}

}

var friends = new Person("aa",26,"IT");

friends.sayName();

注:使用动态原型模式时,不能使用对象字面量重写原型,如果在创建了实例的情况下重写原型,那么就会切断现有原型与新原型之间的联系

寄生构造函数模式

function Person(name,age,job){

var o = new Object();

o.name = name;

o.age = age;

o.job = job;

o.sayName = function(){

alert(this.name);

}

}

var friends = new Person("aa",27,"IT");

friends.sayName();

注:从表面上看是和工厂模式一样,只是最后实例化了一次,而工厂模式是没有在实例化

稳妥构造函数模式

//与寄生模式有两点不同:新创建对象的实例方法不引用this;二是不适用new 操作符调用构造函数

function Person(name,age,job){

//创建要返回的对象

var o = new Object();

// 可以在这里定义私有变量和函数

//添加方法

o.sayName = function(){

alert(name);

}

return o;

}

var friends = Person("aa",27,"IT");

friends.sayName();//aa

时间: 2024-08-08 13:15:27

面向对象的程序设计的相关文章

第十篇 面向对象的程序设计

第十篇 面向对象的程序设计 阅读目录 一 面向对象的程序设计的由来 二 什么是面向对象的程序设计及为什么要有它 三 类和对象 3.1 什么是对象,什么是类 3.2 类相关知识 3.3 对象相关知识 3.4 对象之间的交互 3.5 类名称空间与对象/实例名称空间 3.6 小结 四 继承与派生 4.1 什么是继承 4.2 继承与抽象(先抽象再继承) 4.3 继承与重用性 4.4 组合与重用性 4.5 接口与归一化设计 4.6 抽象类 4.7 继承实现的原理(继承顺序) 4.8 子类中调用父类方法 五

走入计算机的第二十八天(面向对象的程序设计)

一  什么是面向对象的程序设计及为什么要有它 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了程序的复杂度 缺点是:一套流水线或者流程就是用来解决一个问题,生产汽水的流水线无法生产汽车,即便是能,也得是大改,改一个组件,牵一发而动全身. 应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等. 面向对象的程序设计的核心是

面向对象的程序设计:Object-oriented programming

在面向对象的程序设计(英语:Object-oriented programming,缩写:OOP)中,对象是一个由信息及对信息进行处理的描述所组成的整体,是对现实世界的抽象. 在现实世界里我们所面对的事情都是对象,如计算机.电视机.自行车等. 对象的主要三个特性: 对象的行为:可以对 对象施加那些操作,开灯,关灯就是行为. 对象的形态:当施加那些方法是对象如何响应,颜色,尺寸,外型. 对象的表示:对象的表示就相当于身份证,具体区分在相同的行为与状态下有什么不同. 比如 Animal(动物) 是一

python之面向对象的程序设计

第一:程序设计思想与发展历程(了解) 1940年以前:面向机器编程最早的是采用机器语言编程,也就是直接使用二进制码来表示机器能够识别的指令和数据.优点:机器语言由机器直接执行,速度快缺点:写起来非常困难,并且不容易修改 汇编语言:用助记符号代替机器指令的操作码,用地址符号或者标号代替指令或操作数的地址优点:比机器语言的二进制码编写方便些缺点:汇编语言本质上还是一种面向机器的语言,编写困难,易出错 脱离机器后:面向过程编程面向过程的结构化程序设计强调功能的抽象和程序的模块化, 它将解决问题的过程看

JavaScript 面向对象的程序设计记录笔记2(设计模式)

以下为JavaScript高级程序设计 第六章面向对象的程序设计6.2节 创建对象(设计模式部分)读书记录. 1)工厂模式: function createPerson(name, age, sex) { var o = new Obejct(); o.age = age; o.sex = sex; o.name = name; return o; } var person = createPerson('Tom', 12, 'male'); var person = createPerson(

c++面向对象的程序设计

1.面向对象的程序设计的核心思想是数据抽象.动态绑定和继承. 继承:根部称作基类,继承得来的类称作派生类.派生类必须通过使用派生类列表来明确指出它是从哪个基类继承而来的,列表形式是一个冒号,后面紧跟逗号分隔的基类列表.基类可将函数声明成虚函数来让派生类定义自己的版本. 动态绑定:动态绑定指的是在运行时才知道函数的运行版本,因此我们在使用基类的引用(或指针)调用一个虚函数时会发生动态绑定. 2.定义基类和派生类 a.基类通常该定义一个虚析构函数: b.成员函数如果没被声明为虚函数,其解析过程发生在

JavaScript 面向对象的程序设计记录笔记

以下为JavaScript高级程序设计第六章面向对象的程序设计读书笔记记录. 对象存在两个属性: 数据属性/ 访问器属性. 数据属性包括四个值: Configurable: 默认值为true, 表示能否通过delete删除属性重新定义:能否修改属性特性,或者能否吧属性修改为访问器属性. Enumable:  表示能否通过for in循环返回属性.默认值为true. writable: 表示能否修改属性,默认值为true. Value:包含这个属性的数据值. 访问器属性包括四个值:Configur

Python进阶---面向对象的程序设计思想(一)

thon的面向对象 一.面向过程与面向对象的对比 面向过程的程序设计的核心是过程(流水线式思维),过程即解决问题的步骤,面向过程的设计就好比精心设计好一条流水线,考虑周全什么时候处理什么东西. 优点是:极大的降低了程序的复杂度 缺点是:一套流水线或者流程就是用来解决一个问题,生产汽水的流水线无法生产汽车,即便是能,也得是大改,改一个组件,牵一发而动全身. 应用场景:一旦完成基本很少改变的场景,著名的例子有Linux內核,git,以及Apache HTTP Server等. 面向对象的程序设计的核

python基础----面向对象的程序设计

面向对象的软件开发有如下几个阶段: 1.面向对象分析(object oriented analysis ,OOA) 2 面向对象设计(object oriented design,OOD) 3 面向对象编程(object oriented programming,OOP) 4 面向对象测试(object oriented test,OOT) 5 面向对象维护(object oriendted soft maintenance,OOSM) 1 #对象:学校----->归类 2 #共有的特征:商标为

js面向对象的程序设计笔记

chap6:面向对象的程序设计 面向对象(Object-Oriented,OO)的语言有一个标志,那就是它们都有类的概念,而通过类可以创建任意多个具有相同属性和方法的对象.前面提到过,ECMAScript 中没有类的概念,因此它的对象也与基于类的语言中的对象有所不同.ECMA-262 把对象定义为: “无序属性的集合, 其属性可以包含基本值. 对象或者函数. ” 严格来讲,这就相当于说对象是一组没有特定顺序的值.对象的每个属性或方法都有一个名字,而每个名字都映射到一个值.正因为这样(以及其他将要