Java面试题目!【源码分析设计模式 2

时间:2021-08-05
本文章向大家介绍Java面试题目!【源码分析设计模式 2,主要包括Java面试题目!【源码分析设计模式 2使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

六、代码实例


1、UML类图

2、代码架构

3、具体代码

(1)order包包


package com.guor.abstractFactory.order;



import com.guor.abstractFactory.pizza.Pizza;



//一个抽象工厂模式的抽象层(接口)

public interface AbsFactory {

	//让下面的工厂子类来 具体实现

	public Pizza createPizza(String orderType);

}

package com.guor.abstractFactory.order;

import com.guor.abstractFactory.pizza.BJCheesePizza;

import com.guor.abstractFactory.pizza.BJPepperPizza;

import com.guor.abstractFactory.pizza.Pizza;

//这是工厂子类

public class BJFactory implements AbsFactory {

@Override

public Pizza createPizza(String orderType) {

	System.out.println("~使用的是抽象工厂模式~");

	Pizza pizza = null;

	if(orderType.equals("cheese")) {

		pizza = new BJCheesePizza();

	} else if (orderType.equals("pepper")){

		pizza = new BJPepperPizza();

	}

	return pizza;

}

}


package com.guor.abstractFactory.order;



import com.guor.abstractFactory.pizza.LDCheesePizza;

import com.guor.abstractFactory.pizza.LDPepperPizza;

import com.guor.abstractFactory.pizza.Pizza;



public class LDFactory implements AbsFactory {

	@Override

	public Pizza createPizza(String orderType) {

		System.out.println("~使用的是抽象工厂模式~");

		Pizza pizza = null;

		if (orderType.equals("cheese")) {

			pizza = new LDCheesePizza();

		} else if (orderType.equals("pepper")) {

			pizza = new LDPepperPizza();

		}

		return pizza;

	}

} 

package com.guor.abstractFactory.order;

import com.guor.abstractFactory.pizza.Pizza;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

public class OrderPizza {

AbsFactory factory;

// 构造器

public OrderPizza(AbsFactory factory) {

	setFactory(factory);

}



private void setFactory(AbsFactory factory) {

	Pizza pizza = null;

	String orderType = ""; // 用户输入

	this.factory = factory;

	do {

		orderType = getType();

		// factory 可能是北京的工厂子类,也可能是伦敦的工厂子类

		pizza = factory.createPizza(orderType);

		if (pizza != null) { // 订购ok

			pizza.prepare();

			pizza.bake();

			pizza.cut();

			pizza.box();

		} else {

			System.out.println("订购失败");

			break;

		}

	} while (true);

}



// 写一个方法,可以获取客户希望订购的披萨种类

private String getType() {

	try {

		BufferedReader strin = new BufferedReader(new InputStreamReader(System.in));

		System.out.println("input pizza 种类:");

		String str = strin.readLine();

		return str;

	} catch (IOException e) {

		e.printStackTrace();

		return "";

	}

}

}


package com.guor.abstractFactory.order;



public class PizzaStore {

	public static void main(String[] args) {

		new OrderPizza(new BJFactory());

	}

} 

```



(2)pizza包包



```

package com.guor.abstractFactory.pizza;



public class BJCheesePizza extends Pizza {

	@Override

	public void prepare() {

		setName("北京的奶酪pizza");

		System.out.println("北京的奶酪pizza 准备原材料");

	}

} 

package com.guor.abstractFactory.pizza;

public class BJPepperPizza extends Pizza {

@Override

public void prepare() {

	setName("北京的胡椒pizza");

	System.out.println(" 北京的胡椒pizza 准备原材料");

}

}


package com.guor.abstractFactory.pizza;



public class LDCheesePizza extends Pizza{

	@Override

	public void prepare() {

		setName("伦敦的奶酪pizza");

		System.out.println(" 伦敦的奶酪pizza 准备原材料");

	}

} 

package com.guor.abstractFactory.pizza;

public class LDPepperPizza extends Pizza{

总结

如果你选择了IT行业并坚定的走下去,这个方向肯定是没有一丝问题的,这是个高薪行业,但是高薪是凭自己的努力学习获取来的,这次我把P8大佬用过的一些学习笔记(pdf)都整理在本文中了,如果你有需要的话,请一定点赞分享本文,然后点击这里获取免费下载方式!

《Java中高级核心知识全面解析》

小米商场项目实战,别再担心面试没有实战项目:

原文地址:https://www.cnblogs.com/dhsfdhfhgufdu/p/15104233.html