GameMale
登陆 / 注册 搜索

USERCENTER

SEARCHSITE

搜索

查看: 664|回复: 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 回复
    • 我也说一句

    回复

    使用道具 举报

    灵光补脑剂崩朽之青铜龙王虚空之海的鲸实现梦想官复原职永浴爱河白野威業火死鬥十年一梦男巫之歌

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

      使用道具 举报

      收到情书克莱夫・罗兹菲尔德骑兽之子莱因哈特·威尔海姆守护者三角头崩朽之青铜龙王Dante暮狼归来幸福的小阿尔『流星赶月:宙刃』

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

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

        使用道具 举报

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

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

          使用道具 举报

          官复原职实现梦想阿怪和你一起飞行的皮卡丘崩朽之青铜龙王虚空之海的鲸永远的克叔『召唤好运的角笛』生活拍立得重建熊屋

            回复

            使用道具 举报

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

              回复

              使用道具 举报

              野兽之子生活拍立得禽兽扒手收到情书神秘商店贵宾卡葛莱分多无法消解的怨恨雷霆晶球水泡术灵光补脑剂

                回复

                使用道具 举报

                缘起星空美恐:新的开始20x43 隐形➁『梦旅存根』吃饱金币的Doge肉垫手套

                  回复

                  使用道具 举报

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

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

                    使用道具 举报

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

                      回复

                      使用道具 举报

                      炼金之心风暴磁场之鳄双贤辉石头罩召唤古代战士黄色就是俏皮驯化黑龙幼崽蒂法·洛克哈特结晶火鹰幼崽禽兽扒手生活拍立得

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

                        使用道具 举报

                        『住在GM村』炽天使之拥『伊黎丝的赞词』纯真护剑『随时随地开启!』『随时随地开启!』神奇四叶草深渊遗物夏日柯基阿拉喵?神灯

                          回复

                          使用道具 举报

                          阿拉喵?神灯幽灵竹筒和你一起飞行的皮卡丘

                            回复

                            使用道具 举报

                            收到情书

                              回复

                              使用道具 举报

                              收到情书赛博朋克2077荒野大镖客:救赎 II赫夫帕夫【新手友好】昆進石肤术喋血日记本牧羊人GM論壇初心者畢業證書眼镜蛇图腾

                                回复

                                使用道具 举报

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

                                本版积分规则

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

                                GMT+8, 2024-6-3 11:52 , Processed in 0.105352 second(s), 114 queries , Redis On.

                                Copyright © 2013-2024 GameMale

                                All Rights Reserved.

                                快速回复 返回列表