设计模式之简单工厂模式
Posted lzh110
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式之简单工厂模式相关的知识,希望对你有一定的参考价值。
简单画图理解
//设计模式之简单工厂模式 //创建一个食物类 interface Food { void eat(); } //我今天想吃薯条或汉堡 class Hamburger implements Food { @Override public void eat() { System.out.println("我吃汉堡"); } } class FrenchFries implements Food { @Override public void eat() { System.out.println("我吃薯条"); } } //我到速食店了,要开始点餐了 class FoodFactory { static Food createFood(String name) { Food food = null; switch (name) { case "汉堡": food = new Hamburger(); break; case "薯条": food = new FrenchFries(); break; } return food; } } public class Demo3 { public static void main(String[] args) { //我全部都要 Food hamburger = FoodFactory.createFood("汉堡"); hamburger.eat(); Food frenchFries = FoodFactory.createFood("薯条"); frenchFries.eat(); } } 输出: 我吃汉堡 我吃薯条
但是这段代码需要改进,因为汉堡有很多种类,薯条也有不同的类型
//创建一个食物类 interface Food { void eat(); } //我今天想吃薯条或汉堡 class Hamburger implements Food { @Override public void eat() { System.out.println("我要吃奥尔良烤鸡腿堡"); } } class FrenchFries implements Food { @Override public void eat() { System.out.println("我要吃皱纹炸薯条"); } } class HamburgerFactory { static Hamburger createHamburger() { return new Hamburger(); } } class FrenchFriesFactory { static FrenchFries createFrenchFries() { return new FrenchFries(); } } //我到速食店了,要开始点餐了 //class FoodFactory { // static Food createFood(String name) { // Food food = null; // switch (name) { // case "汉堡": // food = new Hamburger(); // break; // case "薯条": // food = new FrenchFries(); // break; // } // return food; // } //} public class Demo3 { public static void main(String[] args) { //我全部都要 // Food hamburger = FoodFactory.createFood("汉堡"); // hamburger.eat(); // Food frenchFries = FoodFactory.createFood("薯条"); // frenchFries.eat(); Hamburger hamburger = HamburgerFactory.createHamburger(); hamburger.eat(); FrenchFries frenchFries = FrenchFriesFactory.createFrenchFries(); frenchFries.eat(); } } 输出: 我要吃奥尔良烤鸡腿堡 我要吃皱纹炸薯条
以上是关于设计模式之简单工厂模式的主要内容,如果未能解决你的问题,请参考以下文章