第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

設(shè)計(jì)模式-工廠模式一(簡單工廠模式)

標(biāo)簽:
設(shè)計(jì)模式

关于设计模式相关的讲解应该有很多。在这里只是简单写一下自己的理解。做个记忆加深,若有可能再跟上一点交流。

其实在工厂模式之前,应该先大概理解什么是工厂模式,为什么一个工厂模式还分为简单工厂模式、工厂方法模式与抽象工厂模式。

工厂模式顾名思义就是类似于现实社会的工厂一样的模式(其实设计模式很多都是来源于生活,做了抽象。之后又去指导生活)。

在封建社会里,大家都是自给自足。什么东西都是自己来创建(new)。造成了资源的浪费,社会也进步有限。最主要的是,慢慢的大家发现,自己做的没有别人家的好。我仅需要原来耗费材料的部分就可以去交换其他人创建的更好的物品。这就是刚开始的简单工厂模式的雏形。

举个栗子:

/**

* 简单的牛奶接口,后续的其他实现都会有牛奶的基本属性(白白的,液体)

*/public interface IMilk {  public String createMilk();
}

因为我们可能会需要不同的牛奶,所以会有不同的牛奶实现

public class MengniuMilkimplements IMilk {    @Override
    public StringcreateMilk() {        return "蒙牛 天生要强!";
    }
}
public class SanYuanMilkimplements IMilk {    @Override
    public StringcreateMilk() {       return "好牛奶,三元造!";
    }
}

再来罐伊利

public class YiLiMilkimplements IMilk {    @Override
    public StringcreateMilk() {      return "好牛,好奶!好伊利!";
    }
}

至此我们已经创建了三种牛奶的实现,在简单工厂模式下会如何处理呢?

public class SimpleFactory {    //注意:若不使用 final关键字  会报constant expression required的编译期错误
    //case语句后面必须是常量,使用final修饰
    public static final int MENGNIU_TYPE =1;    public static final int YILI_TYPE =2;    public static final int SANYUAN_TYPE =3;    public static IMilkcreateDiffMilk(Integer milkType){        switch (milkType){                case MENGNIU_TYPE:                    return new MengniuMilk();                case YILI_TYPE:                    return new YiLiMilk();                case SANYUAN_TYPE:                    return new SanYuanMilk();                default:                    return null;
        }
  }
}

那么我们该如何喝到想喝的牛奶呢?

public class SimpleTest {

  public static void main(String[] args) {        //比如我们要喝蒙牛的牛奶,仅需要
        IMilk mengniu = SimpleFactory.createDiffMilk(SimpleFactory.MENGNIU_TYPE);
        IMilk yili = SimpleFactory.createDiffMilk(SimpleFactory.YILI_TYPE);
        IMilk sanyuan = SimpleFactory.createDiffMilk(SimpleFactory.SANYUAN_TYPE);
        System.out.println(mengniu.createMilk());
        System.out.println(yili.createMilk());
        System.out.println(sanyuan.createMilk());
    }
  }
}

类图如下

webp

image

特点

1 它是一个具体的类,非接口 抽象类。有一个重要的createDiffMilk()方法,利用if或者 switch创建产品并返回。

2 createDiffMilk()方法通常是静态的,所以也称之为静态工厂。



作者:YannisChen_2017
链接:https://www.jianshu.com/p/08df8b93c8e8


點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說多少就多少
贊賞金額會(huì)直接到老師賬戶
支付方式
打開微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊有機(jī)會(huì)得

100積分直接送

付費(fèi)專欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消