简单工厂模式(手机)

15 篇文章 1 订阅

电池类:

package Phone;

/**
 * 电池类
 */
public class Battery {

    private  String bName; //电池型号

    public String getBName() {
        return bName;
    }

    public void setBName(String bName) {
        this.bName = bName;
    }

    @Override
    public String toString() {
        return "Battery{" +
                "bName='" + bName + '\'' +
                '}';
    }
}

主板类:

package Phone;

/**
 * 主板类
 */
public class Motherboard {
    private String mName; //主板型号

    public String getMName() {
        return mName;
    }

    public void setMName(String mName) {
        this.mName= mName;
    }

    @Override
    public String toString() {
        return "Motherboard{" +
                "mName='" + mName + '\'' +
                '}';
    }
}

手机屏幕类:

package Phone;

/**
 * 显示屏
 */
public class Screen {
     private String sName; //屏幕型号

    public String getSName() {
        return sName;
    }

    public void setSName(String sName) {
        this.sName = sName;
    }

    @Override
    public String toString() {
        return "Screen{" +
                "sName='" + sName + '\'' +
                '}';
    }
}

手机类:

package Phone;

/**
 * 手机类
 */
public class Iphone {

     private Battery battery;
     private Motherboard motherboard ;
     private Screen screen;

     public Battery getBattery() {
          return battery;
     }

     public void setBattery(Battery battery) {
          this.battery = battery;
     }

     public Motherboard getMotherboard() {
          return Motherboard;
     }

     public void setMotherboard(Motherboard motherboard) {
          this.motherboard = motherboard;
     }

     public Screen getScreen() {
          return screen;
     }

     public void setScreen(Screen screen) {
          this.screen = screen;
     }

     @Override
     public String toString() {
          return "手机{" +
                  "电池:" + battery.getBName() +
                  ", 主板:" + motherboard.getMName() +
                  ", 屏幕:" + screen.getSName() +
                  '}';
     }
}

制作手机配件类:

package Phone;

/**
 * 组装手机工厂
 */
public interface SetPhoneParts {

    /**
     * 创建电池
     * @return
     */
     Battery createBattery();

    /**
     * 创建主板
     * @return
     */
     Motherboard createMotherboard();

    /**
     * 创建屏幕
     * @return
     */
     Screen createScreen();

}

制作手机配件实现类:

package Phone;

/**
 * 手机原料工厂
 */
public class SetPhonePartsImpl implements SetPhoneParts {

    @Override
    public Battery createBattery() {
        System.out.println("这里是手机原料工厂:正在制作电池...");
        Battery battery= new Battery();
        battery.setBName("飞毛腿");
        return battery;
    }

    @Override
    public Motherboard createMotherboard() {
        System.out.println("这里是手机原料工厂:正在制作主板...");
        Motherboard motherboard= new Motherboard();
        motherboard.setMName("三星");
        return motherboard;
    }

    @Override
    public Screen createScreen() {
        System.out.println("这里是手机原料工厂:正在制作屏幕...");
        Screen screen= new Screen();
        screen.setSName("防弹");
        return screen;
    }
}

装机工厂类:

package Phone;

/**
 * 装机工厂
 */
public interface AssemblePhone {

    /**
     * 装机
     * @return
     */
       Iphone createPhone();
}

装机工厂实现类:

package gongchuan;

/**
 * 装机工厂
 */
public class AssemblePhoneImpl implements AssemblePhone {

     private SetPhoneParts setPhoneParts;

     public AssemblePhoneImpl(){
         //实例制作手机配件
         this.setPhoneParts=new setPhoneParts();
         System.out.println("这里是装机工厂:制作手机配件...");
     }

     public AssemblePhoneImpl(SetPhoneParts setPhoneParts){
         System.out.println("配件送达"+setPhoneParts);
         this.setPhoneParts=setPhoneParts;
     }

    @Override
    public Iphone createPhone() {
        Iphone iphone=new Iphone();
        iphone.setBattery(setPhoneParts.createBattery());
        iphone.setMotherboard(setPhoneParts.createMotherboard());
        iphone.setScreen(setPhoneParts.createScreen());
        System.out.println("这里是装机工厂:正在组装手机...");
        return iphone;
    }




}

测试类:

package Phone;

public class test {
    public static void main(String[]args){

       AssemblePhone assemblePhone=new AssemblePhoneImpl();
        Iphone iphone = assemblePhone.caretePhone();
        System.out.println("组装好的机子:"+iphone);
    }


}

控制台输出:

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2Hhhhhh

一分也是爱 多多益善

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值