电子商务网站建设外包服务的企业,做网站上传图片一直错误,wordpress discuz插件,自己怎么制作图片文章目录 前言一、介绍二、详细分析1.核心组成2.实现步骤3.代码示例4.优缺点优点缺点 5.使用场景 总结 前言
本文主要学习抽象工厂模式#xff0c;抽象工厂模式创建的是对象家族#xff0c;比如#xff1a;苹果是一个产品#xff0c;但是他不单单只生产手机#xff0c;还… 文章目录 前言一、介绍二、详细分析1.核心组成2.实现步骤3.代码示例4.优缺点优点缺点 5.使用场景 总结 前言
本文主要学习抽象工厂模式抽象工厂模式创建的是对象家族比如苹果是一个产品但是他不单单只生产手机还有电脑耳机。。。等等所以抽象工厂模式相较于工厂方法模式是更高维度的一个抽象不限于单单一个产品了。 一、介绍
抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口而无须指定它们具体的类具体的工厂负责实现具体的产品实例。抽象工厂模式创建的是对象家族也就是很多对象而不是一个对象并且这些对象是相关的也就是说必须一起创建出来。解决工厂方法模式每个工厂只能创建一个产品的问题。
二、详细分析
1.核心组成
抽象产品族AbstractProduct描述抽象产品的公共接口抽象工厂Creator描述具体工厂的公共接口抽象产品Product描述具体产品的公共接口具体工厂Concrete Creator描述具体工厂实现FactoryMethod工厂方法创建产品的实例具体产品Concrete Product描述生产的具体产品。
2.实现步骤
创建抽象产品工厂定义具体的工厂公共接口创建抽象产品组定义抽象产品组的公共接口创建具体产品实现抽象产品定义具体生产的产品创建产品组工厂实现抽象产品组定义具体的产品实例方法
3.代码示例
抽象产品工厂类
/*** 抽象电脑工厂*/
public interface ComputerFactory {/*** 生产电脑*/void productionComputer();
}
/*** 抽象产品工厂*/
public interface MobilePhoneFactory {/*** 生产手机*/void productionMobilePhone();
}
抽象产品组
/*** 抽象产品组工厂*/
public interface ProductFactory {/*** 创建电脑工厂* return*/ComputerFactory createComputerFactory();/*** 创建手机工厂* return*/MobilePhoneFactory createMobilePhoneFactory();}具体产品类
/*** 具体产品*/
public class AppleMobilePhone implements MobilePhoneFactory{Overridepublic void productionMobilePhone() {System.out.println(生产苹果手机);}
}/*** 具体产品*/
public class HUAWEIMobilePhone implements MobilePhoneFactory{Overridepublic void productionMobilePhone() {System.out.println(生产华为手机);}
}/*** 具体产品*/
public class AppleComputer implements ComputerFactory{Overridepublic void productionComputer() {System.out.println(生产苹果电脑);}
}/*** 具体产品*/
public class HUAWEIComputer implements ComputerFactory{Overridepublic void productionComputer() {System.out.println(生产华为电脑);}
}产品组工厂
/*** 产品组工厂*/
public class AppleFactory implements ProductFactory{Overridepublic ComputerFactory createComputerFactory() {return new AppleComputer();}Overridepublic MobilePhoneFactory createMobilePhoneFactory() {return new AppleMobilePhone();}
}/*** 产品组工厂*/
public class HUAWEIFactory implements ProductFactory{Overridepublic ComputerFactory createComputerFactory() {return new HUAWEIComputer();}Overridepublic MobilePhoneFactory createMobilePhoneFactory() {return new HUAWEIMobilePhone();}
}测试类 public static void main(String[] args) {AppleFactory appleFactory new AppleFactory();appleFactory.createComputerFactory().productionComputer();appleFactory.createMobilePhoneFactory().productionMobilePhone();}结果
4.优缺点
优点
降低耦合抽象工厂模式将具体产品的创建延迟到具体工厂的子类中这样将对象的创建封装起来可以减少客户端与具体产品类之间的依赖从而使系统耦合度低这样更有利于后期的维护和扩展当一个产品族中的多个对象被设计成一起工作时它能保证使用方始终只使用同一个产品族中的对象。
缺点
产品族扩展困难要增加一个系列列的某一产品既要在抽象的工厂和抽象产品里修改代码不是很符合开闭原则。
5.使用场景
一个系统不要求依赖产品类实例如何被创建、组合和表达的表达这点也是所有工厂模式应用的前提。系统要求提供一个产品类的库所有产品以同样的接口出现客户端不需要依赖具体实现。 总结
以上就是今天要讲的内容本文介绍了抽象工厂模式的分析和使用。