File tree Expand file tree Collapse file tree
Design-Pattern/Creational/Factory Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ import FilerLoggerFactory from "./Factories/FileLoggerFactory" ;
2+ import DatabaseLoggerFactory from "./Factories/DatabaseLoggerFactory" ;
3+
4+ const fileLoggerFactory = new FilerLoggerFactory ( )
5+ const fileLogger = fileLoggerFactory . createLogger ( )
6+ fileLogger . log ( 'ceilf6' )
7+
8+ const databaseLoggerFactory = new DatabaseLoggerFactory ( )
9+ const databaseLogger = databaseLoggerFactory . createLogger ( )
10+ databaseLogger . log ( 'ceilf6' )
Original file line number Diff line number Diff line change 1+ import { DatabaseLogger } from "../LoggerProducts/DatabaseLogger" ;
2+ import { ILogger } from "../LoggerProducts/ILogger" ;
3+ import { IFactory } from "./IFactories" ;
4+
5+ export default class DatabaseLoggerFactory implements IFactory {
6+ createLogger ( ) : ILogger {
7+ return new DatabaseLogger ( )
8+ }
9+ }
Original file line number Diff line number Diff line change 1+ import { FileLogger } from "../LoggerProducts/FileLogger" ;
2+ import { ILogger } from "../LoggerProducts/ILogger" ;
3+ import { IFactory } from "./IFactories" ;
4+
5+ export default class FilerLoggerFactory implements IFactory {
6+ createLogger ( ) : ILogger {
7+ return new FileLogger ( )
8+ }
9+ }
Original file line number Diff line number Diff line change 1+ // 所有工厂的接口
2+ import { ILogger } from "../LoggerProducts/ILogger" ; // 产品接口
3+
4+ export interface IFactory {
5+ createLogger ( ) : ILogger
6+ }
Original file line number Diff line number Diff line change 1+ import { ILogger } from "./ILogger" ;
2+
3+ export class DatabaseLogger implements ILogger {
4+ log ( message : string ) : void {
5+ console . log ( `Log to Database: ${ message } ` ) ;
6+ }
7+ }
Original file line number Diff line number Diff line change 1+ import { ILogger } from "./ILogger" ;
2+
3+ export class FileLogger implements ILogger {
4+ log ( message : string ) : void {
5+ console . log ( `Log to file: ${ message } ` ) ;
6+ }
7+ }
Original file line number Diff line number Diff line change 1+ export interface ILogger {
2+ log ( message : string ) : void ;
3+ }
Original file line number Diff line number Diff line change 1+ import SimpleFactory from "./SimpleFactory" ;
2+
3+ const pro1 = SimpleFactory . createProduct ( "A" )
4+ pro1 . use ( )
5+
6+ const pro2 = SimpleFactory . createProduct ( "B" )
7+ pro2 . use ( )
Original file line number Diff line number Diff line change 1+ export interface IProduct {
2+ use ( ) : void
3+ }
Original file line number Diff line number Diff line change 1+ import { IProduct } from "./Interface" ;
2+
3+ export class ProductA implements IProduct {
4+ use ( ) {
5+ console . log ( 'Product A used' )
6+ }
7+ }
You can’t perform that action at this time.
0 commit comments