标签:测试 ima 自己的 input style hex type 通过 技术
简单工厂不属于23种GOF设计模式,但是也是一种比较常见的设计模式
特点:有一个工厂类。负责依据传入的参数,生成对应的具体产品对象,也就是说通过工厂类对创建对象做了统一的管理。
优点:产品使用者不需要关心产品类的创建过程,与具体产品的实现类达到解耦的效果;
缺点:违背"开放--封闭"原则(OCP),因为新增一个产品类的时候,需要修改原先的工厂方法;
举例:就像有一群人,都是做面包的师傅,每个人都会做属于自己的独特口味,以前呢在商场里都是单打独斗挣钱,现在他们组建成了一个专门生产面包的工厂,工厂每天接收订单,根据订单找到相应的面包师傅,面包师傅负责生产面包就行了。


面包师傅类
package desgubproject2;
//面包师傅类
public class BreakMarker {
//面包师傅制作面包
public void getBreak(){
}
}
面包师傅具体类
package desgubproject2;
//制作黑面包的面包师傅
public class MakeBlackBread extends BreakMarker {
//实现方法
@Override
public void getBreak() {
System.out.println("制作出黑面包");
}
}
package desgubproject2;
//制作蜂蜜面包的面包师傅
public class MarkHoneyBreak extends BreakMarker{
//制作面包
@Override
public void getBreak() {
System.out.println("制作出蜂蜜面包");
}
}
package desgubproject2;
//制作奶油面包的师傅
public class MarkWhiteBreak extends BreakMarker{
//制作面包
@Override
public void getBreak() {
System.out.println("制作出奶油面包");
}
}
工厂类:
package desgubproject2;
//面包生产的工厂类
public class BreakFactory {
private BreakMarker breakMarker=null; //工厂里要有面包师傅
public BreakMarker MakeBreak(int BreakType){
switch (BreakType) { //输入需要的 面包类型
case 1:
breakMarker= new MakeBlackBread(); //寻找相应的面包师傅
break;
case 2:
breakMarker=new MarkHoneyBreak(); //寻找相应的面包师傅
break;
case 3:
breakMarker=new MarkWhiteBreak(); //寻找相应的面包师傅
break;
default:
break;
}
return breakMarker; //找到相应的面包师傅
}
}
测试类
package desgubproject2;
import java.util.InputMismatchException;
import java.util.Scanner;
public class main {
public static void main(String[] args) {
System.out.println("黑面包类型为1");
System.out.println("蜂蜜面包类型为2");
System.out.println("奶油面包类型为3");
System.out.println("请选择需要的面包");
BreakFactory bFactory =new BreakFactory();
Scanner sc=new Scanner(System.in);
while(sc.hasNext()){
try {
int type=sc.nextInt();
BreakMarker makeBreak = bFactory.MakeBreak(type);
makeBreak.getBreak();
} catch (InputMismatchException e) {
System.out.println("请输入正确类型");
String type=sc.nextLine();
}catch (NullPointerException e) {
System.out.println("你说输入的面包不存在");
}
}
sc.close();
}
}
标签:测试 ima 自己的 input style hex type 通过 技术
原文地址:http://www.cnblogs.com/Actexpler-S/p/7470716.html