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

微商城建设购物网站中国建设银官方网站

微商城建设购物网站,中国建设银官方网站,wordpress 外国主题,企业网站系统模板介绍 装饰器模式 是在不修改对象内部结构的情况下#xff0c;动态地给对象添加功能的一种设计模式。在软件开发中#xff0c;有时候我们需要为已有对象添加一些额外的行为#xff0c;但不希望修改该对象的代码#xff0c;装饰器模式可以很好的满足这一需求。 在TypeScrip…介绍 装饰器模式 是在不修改对象内部结构的情况下动态地给对象添加功能的一种设计模式。在软件开发中有时候我们需要为已有对象添加一些额外的行为但不希望修改该对象的代码装饰器模式可以很好的满足这一需求。 在TypeScript中装饰器是一个函数它可以用来注入或修改类、方法、属性或参数的行为。装饰器在编译阶段被执行它会接收被装饰的目标作为参数并且可以返回一个新的构造函数或方法。 装饰器的使用需要在 tsconfig.json 或者 tsconfig.app.json  中启用如下配置 {compilerOptions: {experimentalDecorators: true,emitDecoratorMetadata: true} } class Circle {draw() {console.log(画圆);} }class Decorator {private circle: Circle;constructor(circle: Circle) {this.circle circle;}draw() {this.circle.draw(); // 原有功能this.setBorder(); // 装饰}private setBorder() {console.log(设置边框颜色);} }const circle new Circle(); const decorator new Decorator(circle) decorator.draw() 符合开放封闭原则 装饰器和目标分离解耦装饰器可自由扩展目标可自由扩展 场景  1类装饰器 类装饰器用于装饰整个类通常用来扩展或修改类的功能。 function LogClass(target: Function) {console.log(Class decorated: ${target.name}); }LogClass class ExampleClass {constructor() {console.log(ExampleClass instance created);} }const ec new ExampleClass() // Class decorated: ExampleClass // ExampleClass instance created 在这个例子中LogClass 装饰器会在 ExampleClass 类定义时打印信息。 2方法装饰器 方法装饰器用于装饰类中的方法它可以对方法进行一些增强操作例如添加日志、性能监控等。 function LogMethod(target: any, propertyName: string, descriptor: PropertyDescriptor) {const originalMethod descriptor.value;descriptor.value function (...args: any[]) {console.log(Method ${propertyName} called with arguments: ${args});return originalMethod.apply(this, args);};return descriptor; }class Calculator {LogMethodadd(a: number, b: number): number {return a b;} }const calc new Calculator(); calc.add(2, 3); // 输出: Method add called with arguments: 2,3在这个例子中LogMethod 会拦截 add 方法的调用并记录传递的参数。 3属性装饰器 属性装饰器用于装饰类中的属性它可以用来改变属性的元数据或做一些额外的处理。 function Readonly(target: any, propertyName: string) {Object.defineProperty(target, propertyName, {writable: false}); }class Person {Readonlyname: string John; }const person new Person(); person.name Jane; // 这里会报错因为 name 是只读的在这个例子中Readonly 装饰器将 name 属性设置为不可修改。 4参数装饰器 参数装饰器用于装饰方法的参数它通常用于对参数进行校验或元数据的处理。 function LogParameter(target: any, methodName: string, parameterIndex: number) {console.log(Parameter in ${methodName} at index ${parameterIndex} is decorated); }class User {greet(LogParameter message: string) {console.log(message);} }const user new User(); user.greet(Hello!); // 输出: Parameter in greet at index 0 is decorated在这个例子中LogParameter 装饰器记录了 greet 方法的参数装饰情况。 AOP 面向切面编程AOPAspect Oriented Program是一种编程范式通过将横切关注点例如日志、事务管理等从主要逻辑中分离出来提高了代码的模块化和可重用性。在 TypeScript 中AOP 可以与装饰器模式结合使用以在代码的不同部分方法、函数等应用相同的横切关注点。 一个常见的 AOP 应用场景是性能监控例如计算方法执行时间的装饰器 function measure(target: any, key: string, descriptor: PropertyDescriptor) {const originalMethod descriptor.value;descriptor.value function(...args: any[]) {const startTime performance.now();const result originalMethod.apply(this, args);const endTime performance.now();console.log(Method ${key} took ${(endTime - startTime).toFixed(2)} ms);return result;};return descriptor; }class Example {measureprocess(data: string) {// 模拟一个耗时操作let result ;for (let i 0; i 1000000; i) {result data;}return result;} }const example new Example(); const result example.process(test); // 输出方法执行时间Method process took 32.30 ms在这个示例中measure 装饰器被应用于 process 方法用来测量方法执行时间并输出日志。
http://www.hkea.cn/news/14539492/

相关文章:

  • 集约化网站建设管理html网页设计代码作业简单
  • php商城网站开发实例视频网上企业名称申请入口
  • 网站模板怎么替换无锡专业网站制作
  • 网站开发与经营做网站 分类搜索
  • 自己做网站的过程西安专业网站制作服务
  • 25转行做网站运营完整的社群营销方案
  • 新网站 seo苏州室内设计公司排名
  • 铜川网站建设博达软件网站建设
  • 白银区住房和城乡建设局网站高端品牌网站建设建议
  • 安徽网站建设公司济宁市城市建设投资中心网站
  • 石碣网站仿做网站视频接口 怎么做
  • 建设工程标准在线网站在线咨询网站模板
  • 做门户网站源码石家庄房产信息网站
  • 做电容元器件的网站有哪些大连网页制作美工
  • 空间 网站都有 肿么做网站手机网站转换小程序
  • 北京优化网站推广如何建设提卡网站
  • 网站建设主要包括个人网站有自己服务器是不是就不需要虚拟主机
  • 建设部网站如何下载文件一般通过山女是什么梗
  • 泵网站建设正能量网站大全
  • 重庆网站建设注意事项旅游项目网站开发
  • 劳务派遣东莞网站建设什么颜色做网站好看
  • 网站不兼容怎么办没钱怎么做网站
  • 浙江建设招生网站品质好的形容词
  • 广州网站制作信科建设wordpress可以做电影站
  • 老板让我做镜像网站犯法吗wordpress修改页脚
  • 网站个人备案 企业备案vi设计是啥意思
  • 网站备案后怎么做美工模板网站
  • 电商网站开发 参考文献做网站公司 衡阳公司
  • 怎么做彩票网站变性WordPress
  • 婚纱摄影网站的设计与实现图文制作