From d8c39876e684f6441a27d080b7d145c75b6f3771 Mon Sep 17 00:00:00 2001 From: HarveyMac Date: Sun, 6 Nov 2022 15:41:02 +0800 Subject: [PATCH] =?UTF-8?q?FactoryService=E4=BD=BF=E7=94=A8=20=E5=8F=AF?= =?UTF-8?q?=E4=BB=A5=E4=BD=BF=E7=94=A8useFactory=E8=A8=AD=E5=AE=9A?= =?UTF-8?q?=E6=A2=9D=E4=BB=B6=EF=BC=8C=E4=BE=86=E4=BD=BF=E7=94=A8=E4=B8=8D?= =?UTF-8?q?=E5=90=8C=E7=9A=84Service?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/app.module.ts | 20 ++++++++++++++------ src/app/order-anniversary.service.ts | 18 ++++++++++++++++++ 2 files changed, 32 insertions(+), 6 deletions(-) create mode 100644 src/app/order-anniversary.service.ts diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 4370fb4..dfd34c1 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -4,16 +4,24 @@ import { FormsModule } from '@angular/forms'; import { AppComponent } from './app.component'; import { OrderService } from './order.service'; -import { OrderDiscountService } from './order-discount.service'; +import { OrderAnniversaryService } from './order-anniversary.service'; @NgModule({ imports: [BrowserModule, FormsModule], declarations: [AppComponent], - providers: [{ - provide: OrderService, - useValue:{computeTotal:()=>100}, - },], - + providers: [ + { + provide: OrderService, + useFactory: () => { + const today = new Date(2020, 9, 3); + if (today.getMonth() === 9) { + return new OrderAnniversaryService(); + } else { + return new OrderService(); + } + }, + }, + ], bootstrap: [AppComponent], }) export class AppModule {} diff --git a/src/app/order-anniversary.service.ts b/src/app/order-anniversary.service.ts new file mode 100644 index 0000000..d6ed08b --- /dev/null +++ b/src/app/order-anniversary.service.ts @@ -0,0 +1,18 @@ +import { Injectable } from '@angular/core'; + +import { OrderDetail } from './order-detail'; + +@Injectable({ + providedIn: 'root', +}) +export class OrderAnniversaryService { + details: OrderDetail[] = []; + + constructor() {} + + computeTotal(): number { + return this.details + .map((d) => d.PurchaseCount * d.UnitPrice * 0.8) + .reduce((act, curr) => act + curr, 0); + } +}