工厂模式代码实现

引自:https://blog.csdn.net/weixin_35985385/article/details/81430545   

冰淇淋例子

  • 简单工厂模式(静态工厂):一个工厂可以生产多种产品,一个工厂类,多个产品类。

public interface IceCream{

    public void taste();

}

 

public class AppleIceCream implements IceCream{

    public void taste(){

         System.out.println("这是苹果口味冰淇淋");

    }

}

public class BananaIceCream implements IceCream{

    public void taste(){

         System.out.println("这是苹果口味冰淇淋");

    }

}

public class OrangeIceCream implements IceCream{

    public void taste(){

         System.out.println("这是橘子口味冰淇淋");

    }

}

public class IceCreamFactory{

    public static IceCream createIceCream(String type) {

        IceCream iceCream = null;

        switch(type){

            case "Apple" iceCream = new AppleIceCream();

            case "Banana" iceCream = new BananaIceCream();

            case "Orange" iceCream = new OrangeIceCream();

        }

        return iceCream;

    }

}

public static void main(String[] args){

        IceCream appleIceCream = IceCreamFactory.creamIceCream("Apple");
        appleIceCream.taste();

        IceCream bananaIceCream = IceCreamFactory.creamIceCream("Banana");
        bananaIceCream.taste();

        IceCream orangeIceCream = IceCreamFactory.creamIceCream("Orange");
        orangeIceCream.taste();

}

 

  • 工厂方法模式

public interface IceCream{

    public void taste();

}

AppleIceCream、BananaIceCream、OrangeIceCream

public interfaceIceCreamFactory{

    public void createIceCream();

}

public class AppleIceCreamFactory implements IceCreamFactory {

    public IceCream createIceCream() {
        return new AppleIceCream();
    }
}

public class BananaIceCreamFactory implements IceCreamFactory {

    public IceCream createIceCream() {
        return new BananaIceCream();
    }
}

public class OrangeIceCreamFactory implements IceCreamFactory{

    public IceCream createIceCream() {
        return new OrangeIceCream();
    }
}

// 客户端代码
public class Client {

    /**
     * @param args
     */
    public static void main(String[] args) {

        //生产苹果味冰激凌
        IceCreamFactory appleFactory = new AppleIceCreamFactory();
        IceCream appleIceCream = appleFactory.createIceCream();
        appleIceCream.taste();

        //生产香蕉口味冰激凌
        IceCreamFactory  bananaFactory = new BananaIceCreamFactory();
        IceCream bananaIceCream = bananaFactory.createIceCream();
        bananaIceCream.taste();

        //生产橘子口味冰激凌
        IceCream orangeIceCream = new OrangeIceCreamFactory().createIceCream();
        orangeIceCream.taste();
    }
}

  • 抽象工厂模式

public interface BigIceCream{

    public void taste();

}

 

public interface SmallIceCream{

    public void taste();

}

public class BigAppleIceCream implements BigIceCream {

    public void taste() {
        System.out.println("这是苹果味冰激凌(大份)");
    }
}

public class SmallAppleIceCream implements SmallIceCream {

    public void taste() {
        System.out.println("这是苹果味冰激凌(小份)");
    }
}

//后边还有四个类BigBananaIceCream、SmallBananaIceCream、BigOrangeIceCream、SmallOrangeIceCream
---------------------
作者:LSZJXin
来源:CSDN
原文:https://blog.csdn.net/weixin_35985385/article/details/81430545
版权声明:本文为博主原创文章,转载请附上博文链接!

public interface IceCreamFactory {

    public BigIceCream createBigIceCream();

    public SmallIceCream createSmallIceCream();

}

public class AppleIceCreamFactory implements IceCreamFactory {

    public BigIceCream createBigIceCream() {
        return new BigAppleIceCream();
    }

    public SmallIceCream createSmallIceCream() {
        return new SmallAppleIceCream();
    }
}

public class BananaIceCreamFactory implements IceCreamFactory {

    public BigIceCream createBigIceCream() {
        return new BigBananaIceCream();
    }

    public SmallIceCream createSmallIceCream() {
        return new SmallBananaIceCream();
    }
}

public class OrangeIceCreamFactory implements IceCreamFactory {

    public BigIceCream createBigIceCream() {
        return new BigOrangeIceCream();
    }

    public SmallIceCream createSmallIceCream() {
        return new SmallOrangeIceCream();
    }
}
---------------------
作者:LSZJXin
来源:CSDN
原文:https://blog.csdn.net/weixin_35985385/article/details/81430545
版权声明:本文为博主原创文章,转载请附上博文链接!

public class Client {

    public static void main(String[] args) {

        //生产苹果味冰激凌
        IceCreamFactory appleIceCreamFactory = new AppleIceCreamFactory();
        BigIceCream appleBigIceCream = appleIceCreamFactory.createBigIceCream();
        SmallIceCream appleSmallIceCream = appleIceCreamFactory.createSmallIceCream();
        appleBigIceCream.taste();
        appleSmallIceCream.taste();

        //生产香蕉味冰激凌
        IceCreamFactory bananaIceCreamFactory = new BananaIceCreamFactory();
        BigIceCream bananaBigIceCream = bananaIceCreamFactory.createBigIceCream();
        SmallIceCream bananaSmallIceCream = bananaIceCreamFactory.createSmallIceCream();
        bananaBigIceCream.taste();
        bananaSmallIceCream.taste();

        //生产橘子味冰激凌
        IceCreamFactory orangeIceCreamFactory = new OrangeIceCreamFactory();
        BigIceCream orangeBigIceCream = orangeIceCreamFactory.createBigIceCream();
        SmallIceCream orangeSmallIceCream = orangeIceCreamFactory.createSmallIceCream();
        orangeBigIceCream.taste();
        orangeSmallIceCream.taste();
    }
}
---------------------
作者:LSZJXin
来源:CSDN
原文:https://blog.csdn.net/weixin_35985385/article/details/81430545
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值