0
点赞
收藏
分享

微信扫一扫

浅谈工厂设计--java必备技能


浅谈工厂设计–java必备技能

说到工厂,我就联想到了亚洲的大工厂富士康–接过订单然后按照固定的模板生产商品,其实java中工厂类中的工厂方法也是一样,接过参数,根据参数来生产需要的商品;

今天我们一起来看看何为工厂设计模式,少罗嗦,直接看东西–
假如有客户委托工厂生产披萨,那么这个工厂要先获得客户想要的披萨的相关信息,有没有披萨需要特殊定制的;
根据客户需要先整出一个父类—以下代码仅供参考

package pissa.kind;

/**
* @Auther: GavinLim
* @Date: 2021/7/4 - 07 - 04 - 8:26
* @Description: com.piissa.order
* @version: 1.0
*/
public class Pissa {
//封装--这是必须的
private String name;//名称
private double price;//价格
private int size;//价格
//通用构造方法,子类也能能用到
public Pissa(String name, double price, int size) {
this.name = name;
this.price = price;
this.size = size;
}
//gettersetter方法获得封装之后的信息
public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public double getPrice() {
return price;
}

public void setPrice(double price) {
this.price = price;
}

public int getSize() {
return size;
}

public void setSize(int size) {
this.size = size;
}
//类似于产品展示方法--说明书
public String showInfo() {
return "名称--" + name + "\n" +
"价格--" + price +"\n" +
"大小--" + size ;
}
}

在根据每个商品的独有的方面单独定制;

public class BaconPissa extends Pissa {
private int BaconKG;
public BaconPissa(String name, double price, int size,int baconKG) {
super(name, price, size);
this.BaconKG=baconKG;
}

public int getBaconKG() {
return BaconKG;
}

public void setBaconKG(int baconKG) {
BaconKG = baconKG;
}

@Override
public String showInfo() {
return super.showInfo()+"\n培根的克数是:"+BaconKG+"克";
}
}

public class FruitPissa extends Pissa {
String fruitKind;

public FruitPissa(String name, double price, int size,String fruitKind) {
super(name, price, size);
this.fruitKind=fruitKind;
}

public String getFruitKind() {
return fruitKind;
}

public void setFruitKind(String fruitKind) {
this.fruitKind = fruitKind;
}

@Override
public String showInfo() {
return super.showInfo()+"\n你要加入的水果:"+fruitKind;
}
}

定制生产模板完成之后,整个工厂类来接收客户定制的具体信息—

package com.piissa.order;

import pissa.kind.BaconPissa;
import pissa.kind.FruitPissa;
import pissa.kind.Pissa;

import java.util.Scanner;

/**
* @Auther: GavinLim
* @Date: 2021/7/4 - 07 - 04 - 8:41
* @Description: com.piissa.order
* @version: 1.0
*/
public class GetPissaFactory {


public static Pissa getPissa(int choice){
Scanner sc = new Scanner(System.in);
Pissa p = null;//先定义一个Pissa接收返回值
switch (choice){
case 1:
{
System.out.println("请录入培根的克数:");
int BaconKG = sc.nextInt();
System.out.println("请录入匹萨的大小:");
int size = sc.nextInt();
System.out.println("请录入匹萨的价格:");
int price = sc.nextInt();
//将录入的信息封装为培根匹萨的对象:
BaconPissa baconP = new BaconPissa("培根匹萨",size,price,BaconKG);
p = baconP;
}
break;
case 2:
{
System.out.println("请输入想要加入的水果:");
String fruitKind = sc.next();
System.out.println("请输入匹萨的大小:");
int size = sc.nextInt();
System.out.println("请输入匹萨的零售价:");
int price = sc.nextInt();
//将录入的信息封装为水果匹萨的对象:
FruitPissa fruitP = new FruitPissa("水果匹萨",size,price,fruitKind);
p = fruitP;
}
break;
}
return p;
}
}

以上就定制完成,接下来在客户端呈现

package com.piissa.order;

import pissa.kind.Pissa;

import java.util.Scanner;

/**
* @Auther: GavinLim
* @Date: 2021/7/4 - 07 - 04 - 8:49
* @Description: com.piissa.order
* @version: 1.0
*/
public class PissaTest {
public static void main(String[] args) {

Scanner sc = new Scanner(System.in);
System.out.println("请选择要购买的匹萨(1.培根匹萨 2.水果匹萨):");
int choice = sc.nextInt();//选择
//通过工厂类获取匹萨:
Pissa pissa = GetPissaFactory.getPissa(choice);
System.out.println(pissa.showInfo());
}
}

浅谈工厂设计--java必备技能_java

简单来说就是
在制造之前要先准备具体的类信息,然后将我想要的产品(对象)传入到工厂类的工厂方法在中,然后工厂根据我提供的参数去生产我想要的产品;

共同学习共同进步;


举报

相关推荐

0 条评论