Javascript 如何在typescript中使用抽象类
我正在尝试(以简化的方式)将以下示例移植到typescript,因为我想演示typescript中的抽象工厂模式 到目前为止,我创建的代码如下(仅限结构)Javascript 如何在typescript中使用抽象类,javascript,reactjs,typescript,Javascript,Reactjs,Typescript,我正在尝试(以简化的方式)将以下示例移植到typescript,因为我想演示typescript中的抽象工厂模式 到目前为止,我创建的代码如下(仅限结构) 当前,您的代码需要实例化DAOFactory才能访问getDAOFactory方法: const daoFactory = new DAOFactory; 但是,您不能这样做,因为DAOFactory是抽象的 相反,工厂函数不需要是对象方法——它可以是类方法(静态),甚至只是函数 const getDAOFactory = (whichF
当前,您的代码需要实例化
DAOFactory
才能访问getDAOFactory
方法:
const daoFactory = new DAOFactory;
但是,您不能这样做,因为DAOFactory
是抽象的
相反,工厂函数不需要是对象方法——它可以是类方法(静态),甚至只是函数
const getDAOFactory = (whichFactory: number): DAOFactory => {
switch (whichFactory) {
case 1:
return new SharepointListDAOFactory();
case 2:
return new JsonDAOFactory();
default :
return null;
}
}
现在您只需调用OracleDbFactory=getDAOFactory(DAOFactory.DAOORACLEDB)代码>(类型由函数的返回类型隐式表示)
我确实想知道为什么你需要这个额外的抽象层。看起来像是custDao=getDao(DaoTypes.Customer)
就足够了。像是getDAOFactory
应该是static
。请作为答案发布。这就是问题所在,
DAOFactory OracleDbFactory =
DAOFactory.getDAOFactory(DAOFactory.DAOORACLEDB);
// Create a DAO
CustomerDAO custDAO =
OracleDbFactory.getCustomerDAO();
const daoFactory = new DAOFactory;
const getDAOFactory = (whichFactory: number): DAOFactory => {
switch (whichFactory) {
case 1:
return new SharepointListDAOFactory();
case 2:
return new JsonDAOFactory();
default :
return null;
}
}