网站登录页面制作,html php网站开发报告,网站怎么自适应屏幕大小,网站需要人员目录 了解抽象工厂模式前的前置知识
什么是抽象工厂模式#xff1f;
为什么要提出抽象工厂模式#xff1f;
抽象工厂模式中的四大角色#xff1f;
抽象工厂模式的优缺点#xff1f;
抽象工厂模式的适用场景#xff1f; 了解抽象工厂模式前的前置知识 在讲抽象工厂模式…目录 了解抽象工厂模式前的前置知识
什么是抽象工厂模式
为什么要提出抽象工厂模式
抽象工厂模式中的四大角色
抽象工厂模式的优缺点
抽象工厂模式的适用场景 了解抽象工厂模式前的前置知识 在讲抽象工厂模式之前想要明确两个概念。 一个概念是产品族还有一个概念是产品等级结构。 1产品族产品族是指同一个工厂产生的位于不同产品等级结构中的一组产品。比如小米工厂生产的小米手机、小米电脑、小米音响构成一个产品族。这三种产品属于不同的产品等级结构但是由同一个工厂创建。 2产品等级结构产品等级结构即产品的继承结构如一个手机父类其子类有小米手机、华为手机、苹果手机等。手机类是父类小米手机类、华为手机类、苹果手机类是子类。 什么是抽象工厂模式 抽象工厂模式是创建型模式提供了创建一系列相关的或者相互依赖的对象接口而无须指明具体类。 为什么要提出抽象工厂模式 1由于工厂方法模式的缺点因为简单工厂模式的工厂职责过重而且不满足开闭原则所以有了工厂方法模式。而工厂方法模式又由于每个工厂只生产一类产品可能导致系统中有大量的工厂类增加系统开销此时我们考虑可以将相关的产品构成一个产品族放在同一个工厂生产进而引入了抽象工厂模式。 2由于实际需要。有时候我们需要让一个工厂可以提供多个产品对象而不是一个工厂对应单一的产品对象。 抽象工厂模式中的四大角色 1抽象工厂定义了一个接口或者是抽象类声明了一组用于创建相关产品对象的方法这些方法的返回值通常是抽象产品。 2具体工厂它实现了抽象工厂中创建对象的方法根据不同参数创建具体产品对象。 3抽象产品类定义了一个接口或者是抽象类表示同类产品在抽象产品类中声明该产品具有的方法。 4具体产品类它定义了抽象产品下的具体产品实现了抽象产品类中的声明的方法。 还有一个可选的隐藏角色是工厂创造器根据传入不同的工厂类型创造一个具体的工厂类返回值用抽象工厂接受。 抽象工厂模式的优缺点 优点 1将产品的创建和使用分离开来用户并不需要知道创建过程的细节这使得客户端代码变得整洁。 2容易替换产品系列。由于具体工厂类在一个应用中只需要在初始化的时候出现一次这就使得改变一个应用的具体工厂变得非常容易它只需要改变具体工厂即可使用不同产品配置。 3当一个族中的多个对象被设计到一起工作的时候可以保证客户端使用的都是同一个产品族的对象。 缺点 1产品族扩展非常困难。在产品族需要增加新的产品等级的时候需要修改抽象工厂的代码以及具体工厂的实现。严重违反了“开闭原则”。 2增加了代码的复杂性和抽象性增加了代码理解难度。 抽象工厂模式的适用场景 1需要创建对象和使用分离时并不关心具体的创建过程。系统需要对一个产品族下的不同产品提供统一的访问接口而不关心具体的实现过程。 2系统有多于一个的产品族而在使用时需要动态选择产品族。 3产品等级结构稳定设计完后不会在向系统中添加新的产品等级结构或者删除已有的产品等级结构。 4系统需要让一组产品被设计到一起使用而不是单独设计。