设计模式-创建型-工厂模式

本文主要为的是在准备软件设计师考试的小伙伴准备,帮助大家更好的理解工厂模式。

工厂模式主要有

  • 简单工厂
  • 工厂方法
  • 抽象工厂

简单工厂

咱们先来看简单工厂,假设现在有手机制造商要制造手机,我们都知道手机制造非常麻烦,比如手机有高端机子和低端机子。于是聪明的你就想到了定义一个接口,然后实现类去实现自己的机子。


interface Phone {
    void show();
}

class lowPhone implements Phone {
    @Override
    public void show() {
        System.out.println("我是lowPhone 手机");
    }
}

class HighPhone implements Phone {
    @Override
    public void show() {
        System.out.println("我是HighPhone 手机");
    }
}

这时候,有了手机那么谁来帮我们制作呢?总不可能自己一台一台的制作吧,于是你又想到了找个工厂来帮我们生产。

class PhoneFactory {
    public Phone createPhone(String type) {
        Phone phone = null;
        if (type.equals("low")) {
            phone = new lowPhone ();
        } else if ("high".equals(type)) {
            phone = new HighPhone ();
        }
        return phone;
    }
}

你只要告诉工厂,你要什么牌子的手机,工厂就会帮你制作。

    public static void main(String[] args) {
        PhoneFactory phoneFactory=new PhoneFactory();
        Phone phone = phoneFactory.createPhone("low");
        phone.show();
    }

这就叫简单工厂模式,很好,你已经精通了简单工厂模式。

工厂方法

于是乎,你又想到了,那我如果想制作一个中断手机呢?总不可能在工厂类中在IF-ELSE的判断吧,于是聪明的你经过思考就想到了工厂方法模式。把工厂抽象出来


interface Factory {
    Phone createPhone();
}

class LowFactory implements Factory {

    @Override
    public Phone createPhone() {

        Phone iphone=new lowPhone ();
        //手机制作中*******
        return iphone;
    }
}
class HighFactory implements Factory{

    @Override
    public Phone createPhone() {
        Phone high=new HighPhone ();
        return high;
    }
}

这样,你想要什么手机,就去创建一个工厂

    public static void main(String[] args) {
        Factory diduan = new LowFactory ();
        Phone phone = diduan.createPhone();
        phone.show();
    }

怎么样,是不是很简单?恭喜你又精通了工厂方法模式。那么下面我们来看看抽象工厂

抽象工厂

此时,作为老板的你,不甘于只做手机,你又想做点耳机。耳机也有多个牌子的,也有高端低端中端的,于是乎,你又想起了抽象工厂。
让高端的工厂生产高端的手机、耳机。低端的工厂生产低端的手机、耳机。

interface Factory {
    Phone createPhone();
    headset createHeadSet();
}
class LowFactory implements Factory {

    @Override
    public Phone createPhone() {

        Phone lowPhone=new lowPhone ();
        //手机制作中*******
        return lowPhone;
    }

    @Override
    public headset createHeadSet() {
        Headset lowHeadset=new LowHeadset();
        return lowHeadset;
    }
}
class HighFactory implements Factory{

    @Override
    public Phone createPhone() {
        Phone high=new HighPhone ();
        return high;
    }
     @Override
    public headset createHeadSet() {
        Headset hignHeadset=new HignHeadset();
        return hignHeadset;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值