抽象工厂 设计模式系列3

编程入门 行业动态 更新时间:2024-10-22 21:25:24

<a href=https://www.elefans.com/category/jswz/34/1765602.html style=抽象工厂 设计模式系列3"/>

抽象工厂 设计模式系列3

概述

创建一系列相关或相互依赖对象(一个产品族)。

围绕一个超级工厂创建其他工厂,每个生成的工厂都能按照工厂模式提供全部对象(每个工厂都有一个产品族)。

产品族扩展非常困难,既要在抽象的 Creator 里加代码,又要在具体的里面加代码

比如人穿衣,你需要1套衣服,包括 上衣 裤子 鞋子,通常来说你不会西装配大裤衩和球鞋,你需要成套的,运动套,或者时尚套,或正装。

那么 这个超级工厂 (interface (我习惯用接口,你也可以写成个抽象类))就是穿衣原则,规定了要 上衣 裤子 鞋子

根据超级工厂设计的工厂 (实现超级工厂interface的类)(多个产品族)(正装厂商,运动服厂)能为你提供套装。

同等级产品(不同产品族)也有设计规范,

interface 裤子, 实现它你可以得到 西裤,运动裤,破洞牛仔;

interface 上衣…

当你想要一套衣服 (正装),你需要

你首先要这个工厂,你可以直接new 这个工厂,也可以用加一个用来选择的方法

超级工厂interface XiZhuang_factory =getFactory(“正装”);

(用更抽象的类结构声明 具体类 ,抽象工厂到处都是这钟逻辑)

然后你可以

XiZhuang_factory.get上衣();

XiZhuang_factoryget裤子();

示例

public interface KuZi {void method();
}public class KuZi_KuCha implements KuZi {public KuZi_KuCha() {System.out.println("裤衩");}@Overridepublic void method() {}
}public class KuZi_XiKu implements KuZi {public KuZi_XiKu() {System.out.println("西裤");}@Overridepublic void method() {}
}public interface ShangYi {void method();
}public class shangYi_Txue implements ShangYi {public shangYi_Txue() {System.out.println("T桖");}@Overridepublic void method() {}
}public class shangYi_XiFu implements ShangYi {public shangYi_XiFu() {System.out.println("西装");}@Overridepublic void method() {}
}public interface suitFactory {KuZi get_KuZI();ShangYi get_ShangYi();
}public class suitFactory_Summer implements suitFactory {@Overridepublic KuZi get_KuZI() {return new KuZi_KuCha();}@Overridepublic ShangYi get_ShangYi() {return  new shangYi_Txue();}
}public class suitFactory_XiZhuang implements suitFactory {@Overridepublic KuZi get_KuZI() {return new KuZi_XiKu();}@Overridepublic ShangYi get_ShangYi(){return new shangYi_XiFu();}}public class factoryProducer {static suitFactory getFactory(String a) {if(a=="西装") return new suitFactory_XiZhuang();else if(a=="夏装") return new suitFactory_Summer();return null;}
}public class demo {public static void main(String[] args) {System.out.println("正装");suitFactory factory=factoryProducer.getFactory("西装");factory.get_KuZI();factory.get_ShangYi();System.out.println("\n夏季");suitFactory factory2=factoryProducer.getFactory("夏装");factory2.get_KuZI();factory2.get_ShangYi();}
}运行结果正装
西裤
西装夏季
裤衩
T桖

更多推荐

抽象工厂 设计模式系列3

本文发布于:2024-03-13 16:39:37,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1734398.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:抽象   工厂   模式   系列

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!