工厂模式和抽象工厂模式有什么区别?
面试工厂模式创建单一类型的对象相当于小作坊只生产一种类型的产品比如只生产饮料产品的抽象类饮料产品的具体类咖啡、奶茶产品的抽象工厂每个工厂只可以生产一种产品产品的具体工厂咖啡工厂、奶茶工厂抽象工厂模式创建一系列相关的对象相当于大作坊可以生产很多种类型的产品比如小米公司可以生产手机、笔记本产品的抽象类手机、笔记本产品的具体类小米手机、小米笔记本、苹果手机、苹果笔记本产品的抽象工厂每个工厂可以生产多种产品产品的具体工厂小米工厂、苹果工厂普通工厂模式代码// 产品接口publicinterfaceDatabase{voidconnect();}// 具体产品publicclassMySQLimplementsDatabase{publicvoidconnect(){System.out.println(连接 MySQL);}}publicclassPostgreSQLimplementsDatabase{publicvoidconnect(){System.out.println(连接 PostgreSQL);}}// 工厂接口publicinterfaceDatabaseFactory{DatabasecreateDatabase();}// 具体工厂publicclassMySQLFactoryimplementsDatabaseFactory{publicDatabasecreateDatabase(){returnnewMySQL();}}publicclassPostgreSQLFactoryimplementsDatabaseFactory{publicDatabasecreateDatabase(){returnnewPostgreSQL();}}抽象工厂模式// 抽象产品publicinterfaceButton{voidrender();}publicinterfaceInput{voidrender();}// Windows 产品族publicclassWindowsButtonimplementsButton{publicvoidrender(){System.out.println(渲染 Windows 风格按钮);}}publicclassWindowsInputimplementsInput{publicvoidrender(){System.out.println(渲染 Windows 风格输入框);}}// Mac 产品族publicclassMacButtonimplementsButton{publicvoidrender(){System.out.println(渲染 Mac 风格按钮);}}publicclassMacInputimplementsInput{publicvoidrender(){System.out.println(渲染 Mac 风格输入框);}}// 抽象工厂publicinterfaceUIFactory{ButtoncreateButton();InputcreateInput();}// 具体工厂publicclassWindowsUIFactoryimplementsUIFactory{publicButtoncreateButton(){returnnewWindowsButton();}publicInputcreateInput(){returnnewWindowsInput();}}publicclassMacUIFactoryimplementsUIFactory{publicButtoncreateButton(){returnnewMacButton();}publicInputcreateInput(){returnnewMacInput();}}

相关新闻