网站本科报考官网,大型行业门户网站开发,wordpress 搬迁插件,lol网站模板设计模式#xff08;工厂模式#xff09;
一、工厂模式介绍
在工厂模式中#xff0c;父类决定生成示例的方式#xff0c;但不决定所要生成的具体的类#xff0c;具体的处理部分交给子类负责。这样就可以将生成示例的框架和生成示例的类解耦。
二、示例程序
以下示例程…设计模式工厂模式
一、工厂模式介绍
在工厂模式中父类决定生成示例的方式但不决定所要生成的具体的类具体的处理部分交给子类负责。这样就可以将生成示例的框架和生成示例的类解耦。
二、示例程序
以下示例程序的作用是用来制作身份证IdCard它其中有5个类。 Product类和Factory类属于framework包这两个类组成生成示例的框架。
Product类
framework包中的Product类是用来表示被工厂生成的“产品”的类。在该类中仅声明了use抽象方法具体实现交给子类负责。 在这个框架中定义了“产品”是“任意可以use”的东西。
package com.pengpan.designmode.factory.framework;/*** 产品抽象类*/
public abstract class Product {public abstract void use();
}Factory类
在这个框架中我们定义了用来“生成产品”的createProduct()的抽象方法和用于注册产品的registerProduct()抽象方法。生成产品和注册产品的具体处理交给子类负责。 在这个框架中我们定义了工厂是用来“调用create方法生成Product实例”的。
package com.pengpan.designmode.factory.framework;/*** 工厂抽象类*/
public abstract class Factory {public final Product create(String userName) {Product product createProduct(userName);registryProduct(product);return product;}protected abstract Product createProduct(String userName);protected abstract void registryProduct(Product product);}IDCard类
package com.pengpan.designmode.factory.idcard;import com.pengpan.designmode.factory.framework.Product;public class IdCard extends Product {private final String userName;public IdCard(String userName) {this.userName userName;}Overridepublic void use() {System.out.println(使用了 userName 的IdCard);}private String getUserName() {return this.userName;}
}IDCardFactory类
IDCardFactory类实现了createProduct()方法和registerProduct()方法用于生成IDCard和注册IDCard。
package com.pengpan.designmode.factory.idcard;import com.pengpan.designmode.factory.framework.Factory;
import com.pengpan.designmode.factory.framework.Product;import java.util.ArrayList;
import java.util.List;public class IdCardFactory extends Factory {ListProduct idCardList new ArrayList();Overridepublic Product createProduct(String userName) {return new IdCard(userName);}Overridepublic void registryProduct(Product product) {idCardList.add(product);}
}Main类
package com.pengpan.designmode.factory;import com.pengpan.designmode.factory.framework.Factory;
import com.pengpan.designmode.factory.framework.Product;
import com.pengpan.designmode.factory.idcard.IdCardFactory;public class Main {public static void main(String[] args) {Factory factory new IdCardFactory();Product cardZ factory.create(张三);Product cardL factory.create(李四);Product cardW factory.create(王五);cardZ.use();cardL.use();cardW.use();}
}