GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 892|回复: 15
收起左侧

[技巧科普] 【java】设计模式-抽象工厂模式

[复制链接] |关注本帖

邪恶的面具堕落之舞风雪之家香喷喷的烤鸡眼镜蛇图腾寻觅牧羊人

     楼主| 白冥 发表于 2024-5-20 15:54:51 | 显示全部楼层 |阅读模式 |取消关注该作者的回复
    本帖最后由 白冥 于 2024-5-20 16:29 编辑
    1. public interface Heitai {
    2.     void fack ();
    3. }

    4. public interface Clothes {
    5.     void dress ();
    6. }

    7. public class CuteHentai implements Heitai {
    8.     public CuteHentai () {}
    9.     public void fack () {
    10.         System.out.println ("A cuteHentai is facked.");
    11.     }
    12. }

    13. public class HandsomeHentai implements Heitai {
    14.     public HandsomeHentai () {}
    15.     public void fack() {
    16.         System.out.println ("A handsomeHentai is facked.");
    17.     }
    18. }

    19. public class MurcularHentai implements Heitai {
    20.     public MurcularHentai () {}
    21.     public void fack () {
    22.         System.out.println ("A murcularHentai is facked.");
    23.     }
    24. }

    25. public class Hoodie implements Clothes {
    26.     public Hoodie () {}
    27.     public void dress() {
    28.         System.out.println ("A hantai dresses a hoodie.");
    29.     }
    30. }

    31. public class SailorSuit implements Clothes {
    32.     public SailorSuit () {}
    33.     public void dress() {
    34.         System.out.println ("A hantai dressed a sailor suit.");
    35.     }
    36. }

    37. public class Jyoshikoukousei implements Clothes {
    38.     public Jyoshikoukousei () {}
    39.     public void dress () {
    40.         System.out.println ("A hentai dressed a jyoshikoukousei.");
    41.     }
    42. }

    43. public abstract class AbstractFactory {
    44.     public abstract Heitai getHeitai (String HeitaiType);
    45.     public abstract Clothes getClothes (String ClothesType);
    46. }

    47. public class HeitaiFactory extends AbstractFactory {
    48.     public HeitaiFactory () {}
    49.     public Heitai getHeitai(String HeitaiType) {
    50.         switch (HeitaiType) {
    51.             case null:
    52.                 return null;
    53.             case "CuteHentai":
    54.                 return new CuteHentai ();
    55.             case "HandsomeHentai":
    56.                 return new HandsomeHentai ();
    57.             case "MurcularHentai":
    58.                 return new MurcularHentai ();
    59.             default:
    60.                 return null;
    61.         }
    62.     }
    63.     public Clothes getClothes (String ClothesType) {
    64.         return null;
    65.     }
    66. }

    67. public class ClothesFactory extends AbstractFactory {
    68.     public ClothesFactory () {}
    69.     public Heitai getHeitai (String HeitaiType) {
    70.         return null;
    71.     }
    72.     public Clothes getClothes (String ClothesType) {
    73.         switch (ClothesType) {
    74.             case null:
    75.                 return null;
    76.             case "Hoodie":
    77.                 return new Hoodie ();
    78.             case "SailorSuit":
    79.                 return new SailorSuit ();
    80.             case "Jyoshikoukousei":
    81.                 return new Jyoshikoukousei ();
    82.             default:
    83.                 return null;
    84.         }
    85.     }
    86. }

    87. public class AbstractFactoryProducer {
    88.     public AbstractFactoryProducer () {}
    89.     public AbstractFactory getFactory (String factoryType) {
    90.         switch (factoryType) {
    91.             case null:
    92.                 return null;
    93.             case "Heitai":
    94.                 return new HeitaiFactory ();
    95.             case "Clothes":
    96.                 return new ClothesFactory ();
    97.             default:
    98.                 return null;
    99.         }
    100.     }
    101. }
    复制代码

    比如我们可以在抽象工厂生成器中输入“Hentai”,就能返回一个Hentai工厂;在Hentai工厂中输入“CuteHentai”,就能返回一个CuteHentai对象。

    评分

    参与人数 1追随 +1 收起 理由
    凛酱不是憨憨 + 1

    查看全部评分

      收起(3)
    • 白冥 白冥 :欸,怎么代码有被吞?
      2024-05-20 16:05 回复
    • 白冥 白冥 :已经重发了,不过解释文字又被吞了。
      2024-05-20 16:31 回复
    • 白冥 白冥 :这里补充:
      这段代码实现了抽象工厂设计模式。抽象工厂模式是一种创建型设计模式,它提供了一种方式来封装一组具有共同主题的单个工厂,而不需要指定它们的具体类。在这个模式中,客户端不依赖于产品类实例如何被创建、实现等细节,而是通过一个通用的抽象接口来指向新创建的对象。

      比如我们可以在抽象工厂生成器中输入“Hentai”,就能返回一个Hentai工厂;在Hentai工厂中输入“CuteHentai”,就能返回一个CuteHentai对象。
      2024-05-20 16:31 回复
    • 我也说一句

    回复

    使用道具 举报

    实现梦想業火死鬥魔法不朽·传奇不熄卡洛斯·奥利维拉白野威十年一梦官复原职男巫之歌永浴爱河虚空之海的鲸

      挺实用的代码,复制一下尝尝看。
      回复

      使用道具 举报

      内森·德雷克業火死鬥诺克提斯·路西斯·伽拉姆BIG BOSS克莱夫・罗兹菲尔德岛田半藏性感男神GM莱因哈特·威尔海姆

        koh 发表于 2024-5-20 16:11:56 | 显示全部楼层 |取消关注该作者的回复
        本帖最后由 koh 于 2024-5-20 16:19 编辑

        只看到不同的类继承了两大接口~后面不知道了
          收起(2)
        回复

        使用道具 举报

        装饰触手Ⓛ牧羊人装饰触手Ⓡ特殊-家园卫士Ⓡ镜中小鸟新手蛋

          这种设计模式挺好的,跟接口进行交互,但我开发总是偷懒最后代码又糊成一大块了 hhh
          回复

          使用道具 举报

          百相千面-晦永远的克叔業火死鬥实现梦想官复原职虚空之海的鲸Zootopia幸运女神的微笑『逆境中的幸运女神』御医神兔

            回复

            使用道具 举报

            诺克提斯·路西斯·伽拉姆Forever Titanic業火死鬥钢铁侠永远的克叔极·龙の意死灵之书卡利亚权杖虚空之海的鲸史莱姆牧场

              回复

              使用道具 举报

              禽兽扒手『住在GM村』GHOST小丑与格雷与星光璀璨杰森‧斯坦森上古卷轴V:天际炽天使之拥诡异的灵魂石冰海钓竿『迷翳之中』

                回复

                使用道具 举报

                20x43 隐形➀吃饱金币的Doge冒险用指南针金牌矿工小小安全帽小小舞台阿拉喵?神灯图腾饼干『梦旅存根』

                  回复

                  使用道具 举报

                  亚索月影狼晓月终焉旅行骰子!卡利亚权杖

                    只看懂了Hentai,这工厂一定会排出很多黄色废料,好在不用担心污染环境(嗯?)。
                      收起(5)
                    回复

                    使用道具 举报

                    【新手友好】昆進GM論壇進階勛章牧羊人森林羊男

                      回复

                      使用道具 举报

                      史莱姆牧场吸血魔蝠萨菲罗斯苏醒的格罗姆圣甲虫秘典可爱黑猫诺克提斯·路西斯·伽拉姆夏日柯基美恐:新的开始

                        我只会点py,看来每种语言逻辑与表达方式还是很不同的
                        回复

                        使用道具 举报

                        『住在GM村』格拉迪欧拉斯雪王的心脏『星河碎片』『灰域来音』预知水晶球炽天使之拥『伊黎丝的赞词』纯真护剑『随时随地开启!』

                          回复

                          使用道具 举报

                          脉律辐石劫掠核芯御医神兔夏日柯基幽灵竹筒黄金树的恩惠探险三杰士图腾饼干生活拍立得璀璨金币

                            回复

                            使用道具 举报

                            安德鲁·库珀索尔·奥丁森安德森‧戴维斯走出失恋阴影的罗罗詹米·多南

                              回复

                              使用道具 举报

                              魔法石碑吃饱的小阿尔驯化黑龙幼崽新月护符森林羊男夜灯牧羊人近地夜航

                                回复

                                使用道具 举报

                                您需要登录后才可以回帖 登录 | 立即注册

                                本版积分规则

                                文字版|手机版|小黑屋|GameMale

                                GMT+8, 2024-12-22 13:58 , Processed in 0.135666 second(s), 117 queries , Redis On.

                                Copyright © 2013-2024 GameMale

                                All Rights Reserved.

                                快速回复 返回列表