马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
简单工厂 、工厂方法模式和抽象工厂模式
1.模式性子与定位
简单工厂:并非正式的计划模式(属编程风俗),通过单一工厂类根据参数判定创建差异产物,本质是将对象创建逻辑会合管理。
工厂方法:是尺度的创建型计划模式,界说抽象创建接口,由子类决定实例化哪个详细产物类,夸大 “单一产物” 的机动创建。
抽象工厂:同样是创建型计划模式,聚焦 “产物族” 的创建,一个工厂类负责创建一组相干产物(如手机、耳机、充电器构成的电子产物族)。
2产物创建范围
简单工厂、工厂方法:偏重单个产物的创建。比方,创建 “手机” 这一产物,简单工厂通过条件判定决定详细手机范例,工厂方法通过子类工厂创建特定手机。
抽象工厂:关注多个相干产物的组合创建。如创建 “手机 + 耳机” 的产物族,抽象工厂需界说多个创建方法,分别天生差异范例的产物。
3.扩展性与开闭原则
简单工厂:扩展性差。新增产物时需修改工厂类的创建逻辑(如添加if-else或switch分支),违背开闭原则。
工厂方法:扩展性好。新增产物时,只需界说新的产物类和对应的工厂子类,无需修改原有工厂代码,完全符合开闭原则。
抽象工厂:扩展性较复杂。新增产物族时,可通过扩展工厂子类实现;但新增某一产物范例(如产物族中新增 “平板”),需修改抽象工厂接口及全部详细工厂类,违背开闭原则。
- 结构复杂度
简单工厂:结构最简单,仅一个工厂类处置惩罚全部产物创建逻辑。
工厂方法:复杂度适中,包罗抽象产物、详细产物、抽象工厂、详细工厂等类,需为每个产物计划对应的工厂子类。
抽象工厂:结构最复杂,涉及多个产物接口、多个详细产物类,以及包罗多个创建方法的抽象工厂和详细工厂类,代码量和类关系更多。
- 范例应用场景
简单工厂:实用于产物种类少、创建逻辑不复杂,且后续扩展需求低的场景,如简单的日志 记录器创建。
工厂方法:实用于须要机动扩展产物范例的场景,如差异数据库毗连对象的创建(新增数据库范例时,扩展工厂子类即可)。
抽象工厂:实用于产物需成族搭配利用的场景,如跨平台 UI 组件(Windows 和 Mac 的 “按钮 + 文本框” 组件族,通过抽象工厂创建对应平台的组件组合)。
4. 简单工厂模式
- public interface Payment {
-
-
- String pay(String orderId, double amount);
- }
复制代码 2.实现微信付出类
- public class WeChatPayment implements Payment {
-
-
- @Override
- public String pay(String orderId, double amount) {
-
-
- return "使用微信支付,订单号:" + orderId + ",金额:" + amount;
- }
- }
复制代码 3.实现付出宝付出类
- public class AlipayPayment implements Payment {
-
-
- @Override
- public String pay(String orderId, double amount) {
-
-
- return "使用支付宝支付,订单号:" + orderId + ",金额:" + amount;
- }
- }
复制代码- public class PaymentFactory {
-
-
- public static Payment createPayment(String payType) {
-
-
- if ("wechat".equals(payType)) {
-
-
- return new WeChatPayment();
- } else if ("alipay".equals(payType)) {
-
-
- return new AlipayPayment();
- }
- return null;
- }
- }
复制代码- public class Client {
-
-
- public static void main(String
复制代码 免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |