当前位置: 首页 > news >正文

升降平台联系企汇优做网站推广长沙网站优化排名推广

升降平台联系企汇优做网站推广,长沙网站优化排名推广,高校网站建设方案,wordpress4.7英文版目录 1,抽象类1,为什么需要抽象类2,抽象成员3,设计模式-模板模式 2,静态成员1,什么是静态成员2,设计模式-单例模式 1,抽象类 1,为什么需要抽象类 有时,某个…

目录

  • 1,抽象类
    • 1,为什么需要抽象类
    • 2,抽象成员
    • 3,设计模式-模板模式
  • 2,静态成员
    • 1,什么是静态成员
    • 2,设计模式-单例模式

1,抽象类

1,为什么需要抽象类

有时,某个类只表示一个抽象的概念,主要用于提取子类的公共成员,而不是直接创建它的实例对象。此时,这个类可以作为抽象类。

实现:在类名前加 abstract,抽象类不可以通过 new 来创建实例对象。

2,抽象成员

有时,一些公共成员是必须存在的,但还不确定成员的值或具体实现。因为,需要一种强约束,让继承的子类必须实现这些成员。

也就是说,抽象类中定义的抽象成员,在子类中必须实现。

如果子类也是抽象类,则可以不实现父类中的抽象成员或方法。

子类的3种实现方式:

abstract class Chess {abstract readonly name: string;
}// 第1种
class Horse extends Chess {readonly name: string = "马";
}// 第2种
class Pao extends Chess {readonly name: string;constructor() {super();this.name = "炮";}
}// 第3种
class Soldier extends Chess {get name() {return "兵";}
}

3,设计模式-模板模式

当某个公共方法中,一部分是公共逻辑,一部分又是私有逻辑(需要再子类中实现)。

此时,可以不将该方法定义为抽象方法,而是将那部分私有逻辑定义为抽象方法,并在当前方法中调用即可。

这样的强约束,可以只关注子类需要实现的东西,其他的父类已经完成。

abstract class Chess {abstract readonly name: string;move(targetX: number, targetY: number): boolean {// 第1和第2步属于公共逻辑// 1,边界条件判断// 2,目标位置是否有己方棋子// 第3步属于私有逻辑:不同兵种的移动规则(需要在子类中实现)if (this.rule(targetX, targetY)) {console.log("移动成功");return true;} else {return false;}}protected abstract rule(targetX: number, targetY: number): boolean;
}class Horse extends Chess {protected rule(targetX: number, targetY: number): boolean {return true; // 简单实现,做测试使用。}readonly name: string = "马";
}const horse = new Horse();
horse.move(2, 3);

2,静态成员

1,什么是静态成员

指附着在类上的成员(相当于构造函数的属性),通过static修饰。

每个实例成员的相同属性,理论上是不一样的,所以那些相同的属性应该作为静态成员,附着在类上。

构造函数或非静态方法中的this指向实例对象,如果要访问当前类,直接使用类名即可。

静态方法中的this指向当前类。

class User {static users: User[] = [];constructor(public id: string, public pwd: string, public name: string, public age: number) {User.users.push(this);}static login(loginId: string, loginPwd: string): User | undefined {// 静态方法中 this 指向当前类return this.users.find((user) => user.id === loginId && user.pwd === loginPwd);}sayHello() {console.log(`我是${this.name}`);}
}new User("u1", "pwd1", "用户1", 18);
new User("u2", "pwd2", "用户2", 188);console.log(User.users);const user = User.login("u1", "pwd1");
if (user) {user.sayHello();
}

2,设计模式-单例模式

某些类的实例对象,在系统中只允许存在一个,为了避免开发者随意创建实例对象而产生预期之外的错误,可以使用单例模式进行强约束。

构造函数私有化或抽象类,都不允许 new 实例对象。

class User {private constructor() {}private static _user?: User;static createUser() {if (!this._user) {this._user = new User();}return this._user;}
}const u1 = User.createUser();
const u2 = User.createUser();
console.log(u1 === u2);

下面的方式也可以创建单例,但有一些缺陷。

  • 实例对象一开始就创建了,不是在需要时才创建。
  • 做不到在创建单例对象时,提前执行一些代码。
class User {private constructor() {}static readonly singleUser = new User()
}const u1 = User.singleUser;
const u2 = User.singleUser;
console.log(u1 === u2);

以上。

http://www.yidumall.com/news/9955.html

相关文章:

  • 长沙机械网站建设关键词排名怎么上首页
  • 简单网站模板下载网站优化 秦皇岛
  • 做地方短租网站推广运营是做什么的
  • 移动端网站建设的方案网络代理app
  • 做网站去哪里找模板2020年十大关键词
  • 商城站营销型网站建设易网拓
  • 网络宣传网站建设定制seo搜索引擎优化公司
  • 我想做服装网站怎么做天津优化加盟
  • 网站怎样做谷歌推广短视频seo关键词
  • 做网站销售这几天你有什么想法网页设计网站建设
  • 有什么做服装的网站做百度推广的公司电话号码
  • 手机微信官方网站常用的网络营销平台有哪些
  • 自己开发小程序要多少钱天桥区seo全网宣传
  • 网站开发 纠纷软文广告经典案例300大全
  • 网站页面设计网页说明北京搜索引擎关键词优化
  • 网站运营工作具体做啥营销策划的十个步骤
  • 邯郸做网站推广百度竞价入门教程
  • 手机网站发布页电脑版排名优化培训
  • 介绍网站设计风格seo优化包括哪些内容
  • 自助建网站系统北京网站建设公司优势
  • 莞城区网站仿做百度订单售后电话
  • 做网站需要多少费用阿里巴巴国际站官网
  • 怎样做网站用html如何用html制作一个网页
  • 有没有免费做企业网站的搜索引擎推广的优势
  • 战地之王网站做任务品牌营销方案
  • 福田汽车官网报价大全上海还能推seo吗
  • 江苏SEO网站建设樱桃bt磁力天堂
  • 要建网站杭州百度快照优化公司
  • 用卫生纸做的礼物街网站营业推广的方式
  • 网站如何快速收录优化游戏性能的软件