本文主要向大家介绍了JAVA语言简单工厂模式代码实例讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
一. 定义
简单工厂其实并不是一个设计模式,说它是一种良好的编程规范更为合适。它将创建对象的代码和业务逻辑的代码相互隔离开来,增加了程序的松耦合效果。
二. 模式起源
三. 设计原则
封装变化。
四. UML图
五. 代码
5.1 水果类
package model.simpleFactory;
/**
* 水果类
*/
public abstract class Fruit {
/**
* 展示是哪种水果
*/
public abstract void show();
}
5.2 苹果水果类
package model.simpleFactory;
/**
* 水果:苹果
*/
public class Apple extends Fruit {
@Override
public void show() {
System.out.println("i am a apple");
}
}
5.3 香蕉水果类
package model.simpleFactory;
/**
* 水果: 香蕉
*/
public class Banana extends Fruit {
@Override
public void show() {
System.out.println("I am a banana");
}
}
5.4 橘子水果类
package model.simpleFactory;
/**
* 水果: 橙子
*/
public class Orange extends Fruit {
@Override
public void show() {
System.out.println("I am an orange");
}
}
5.5 梨水果类
package model.simpleFactory;
/**
* 水果: 梨
*/
public class Pear extends Fruit {
@Override
public void show() {
System.out.println("I am a Pear");
}
}
5.6 简单水果工厂类
package model.simpleFactory;
/**
* 简单水果工厂
*/
public class SimpleFruitFactory {
/**
* 创建水果
*
* @param type 类型
* @return Fruit
*/
public static Fruit createFruit(String type) {
Fruit fruit = null;
if (type.equals("apple")) {
fruit = new Apple();
} else if (type.equals("banana")) {
fruit = new Banana();
} else if (type.equals("orange")) {
fruit = new Orange();
} else if (type.equals("pear")) {
fruit = new Pear();
}
return fruit;
}
}
5.7 水果商店类
package model.simpleFactory;
/**
* 水果商店
*/
public class FruitStore {
/**
* 内部维护一个简单水果工厂
*/
private SimpleFruitFactory factory;
public FruitStore(SimpleFruitFactory factory) {
this.factory = factory;
}
public Fruit orderFruit(String type) {
Fruit fruit = SimpleFruitFactory.createFruit(type);
fruit.show();
return fruit;
}
}
5.8 测试
package model.simpleFactory;
public class Main {
public static void main(String[] args) {
SimpleFruitFactory simpleFruitFactory = new SimpleFruitFactory();
FruitStore fruitStore = new FruitStore(simpleFruitFactory);
fruitStore.orderFruit("apple");
fruitStore.orderFruit("banana");
}
}
5.9 结果
i am a apple
I am a banana
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!