设计模式-抽象工厂(Demo)

本文介绍了一种通过定义接口和使用工厂模式来实现自动化服务的方法,通过预设的步骤流程,即使原服务提供者不在场,也能确保服务的连续性和质量。以SPA和章鱼烧为例,展示了如何利用接口和工厂模式解决服务人员临时缺席的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


故事

          啊------- = 0 = 打了个哈气、这一觉睡的浑身酸疼、哎呦……我的脖子、要是能做个SPA就美滋滋了、嘿嘿、遥!遥呢!我要做SPA!


          媛:她出去了、

          我:干嘛去了?

          媛:不知道啊……


          我:啪--!………我的手狠狠的拍了下桌子、擅自离职!那我的SPA谁来做?我还想吃章鱼烧呢!

          媛:主人、您忘了你上次学了抽象工厂、突发奇想、为了避免这种情况已经想好了解决方案。

          我:纳尼?看来我真是又聪明又帅羡慕、说说我弄了啥方案?


          媛:为了避免您需要服务的时候找不到人、您已经让遥吧做SPA的步骤方法、和做章鱼丸的步骤方法都写好了、我们只要看着方法做、也能给您做SPA和章鱼丸、不过因为我们不是遥、所以SPA的舒适度和章鱼丸的味道可能会不一样。


          我:好就这么办!今天你做、明天交悦也试试、看看你们谁弄得好、还有你过来



摸头ing…………摸头ing…………摸头ing…………摸头ing…………




UML图:




讲解:

          如果类A依赖类B、如果类B不在了、或者损坏丢失那A类怎么办???也不能用了、那调用A类的类呢?咋办?也不能用了、那调用-调用A类的类的类呢………………嘿嘿、如果定义好接口、A类调用一个I接口、只要有类实现类这个接口、实现接口的类坏掉了、再写一个或者换一个类嘛、只要实现了I接口、A类照样能用。

          文中的遥不在、理论上我就不能做SPA和吃章鱼丸了、但是我事先叫遥写了这两件事的流程、也就是接口类、所以媛和悦按照这个流程、也就是接口做、就能完成这两件事。


代码

<span style="font-size:18px;">Public Class Form1

    '章鱼接口
    Public Interface IOctopus
        Function Ieat() As String '被吃方法
    End Interface
    '媛-做章鱼烧的类
    Public Class yuanOctopus : Implements IOctopus

        Public Function Ieat() As String Implements IOctopus.Ieat
            Return "我在吃--媛--做的章鱼烧、好难吃!"
        End Function
    End Class
    '悦-做章鱼烧的类

    Public Class yueOctopus : Implements IOctopus
        Public Function Ieat() As String Implements IOctopus.Ieat
            Return "我在吃--悦--做的章鱼烧、很美味!"
        End Function
    End Class
    '按摩接口
    Public Interface ISPA
        Function ISPA() As String '按摩方法
    End Interface
    '媛-做按摩的类
    Public Class yuanSPA : Implements ISPA
        Public Function ISPA() As String Implements ISPA.ISPA
            Return "媛--左捏捏右捏捏--给我做SPA"
        End Function
    End Class
    '悦-做按摩的类
    Public Class yueSPA : Implements ISPA

        Public Function ISPA() As String Implements ISPA.ISPA
            Return "悦--把我弄到一个浴缸里---给我做SPA"
        End Function
    End Class
    '女仆工厂接口
    Public Interface IMaid
        Function IMakeOctopus() As IOctopus  '做章鱼烧
        Function IMakeSPA() As ISPA  '做SPA
    End Interface
    '媛工厂
    Public Class YUAN : Implements IMaid
        '媛做章鱼烧
        Public Function IMakeOctopus() As IOctopus Implements IMaid.IMakeOctopus
            Return New yuanOctopus
        End Function
        '媛做SPA
        Public Function IMakeSPA() As ISPA Implements IMaid.IMakeSPA
            Return New yuanSPA
        End Function
    End Class
    '悦工厂
    Public Class YUE : Implements IMaid
        '悦做章鱼烧
        Public Function IMakeOctopus() As IOctopus Implements IMaid.IMakeOctopus
            Return New yueOctopus
        End Function
        '悦做SPA
        Public Function IMakeSPA() As ISPA Implements IMaid.IMakeSPA
            Return New yueSPA
        End Function
    End Class


    '媛
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim yuan As IMaid = New YUAN
        Label2.Text = yuan.IMakeOctopus.Ieat '章鱼烧文字
        Label3.Text = yuan.IMakeSPA.ISPA 'SPA文字

    End Sub
    '悦
    Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
        Dim yue As IMaid = New YUE
        Label2.Text = yue.IMakeOctopus.Ieat '章鱼烧文字
        Label3.Text = yue.IMakeSPA.ISPA 'SPA文字
    End Sub
End Class
</span>



效果图





优点:

          便于交换产品系列、只要定了接口、这个女仆那个女仆都能实现、换一个人也能把事办了

类的具体过程与客户端分离、还是那个我与章鱼丸和SPA解耦、我不会但是我知道两个女仆会弄就行了


缺点:

          要是再加一个脚底按摩呢?就要加一个脚底按摩的接口、改下工厂接口、并且每个工厂的实现类都要写、我去== 世界末日!


改缺点……

          --明天在写、简单工厂+抽象工厂- -



————————————直接把设计模式写成chenchen后宫传的了……————————————

—————————chenchen—————————

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值