标签:orange 参数 interface lang rgs str apple void 测试结果
创建对象的最佳方式,相当于把创建对象的过程进行了封装,这样可以将实例化对象的逻辑不对外共享,对外提供一个工厂类方便调用
工厂模式分为三种
普通工厂模式
//step1:创建接口
interface Fruit {
public void product();
}
//step2:创建类实现接口
class Apple implements Fruit {
@Override
public void product() {
System.out.println("开始生产苹果汁");
}
}
class Orange implements Fruit {
@Override
public void product() {
System.out.println("开始生产橙汁");
}
}
class Banana implements Fruit {
@Override
public void product() {
System.out.println("开始生产香蕉汁");
}
}
//step3:创建工厂类,实现给定指定条件创建指定对象
public class FactoryBean {
// 1.普通工厂模式
public Fruit getFruit(String type) {
if (type.equals("Apple")) {
// 创建对象的逻辑-----【封装】
return new Apple();
} else if (type.equals("Orange")) {
// 创建对象的逻辑-----【封装】
return new Orange();
} else if (type.equals("Banana")) {
// 创建对象的逻辑-----【封装】
return new Banana();
} else
return null;
}
//step4:使用工厂类,通过传递类型参数获取指定类的对象。
public class FactoryTest {
public static void main(String[] args) {
FactoryBean f = new FactoryBean();
Fruit fruit = f.getFruit("Orange");
Fruit fruit2 = f.getFruit("Apple");
Fruit fruit3 = f.getFruit("Banana");
fruit.product();
fruit2.product();
fruit3.product();
}
}
运行效果:
多工厂模式
相当于普通工厂模式的提升,提供了多个方法实现不同对象的实例化过程。
public class FactoryBean {
// 2.多工厂模式
public Apple getApple() {
return new Apple();
}
public Orange getOrange() {
return new Orange();
}
public Banana getBanana() {
return new Banana();
}
public class FactoryTest {
public static void main(String[] args) {
// 2.多工厂模式测试
FactoryBean f = new FactoryBean();
Apple apple = f.getApple();
Banana banana = f.getBanana();
Orange orange = f.getOrange();
apple.product();
banana.product();
orange.product();
}
}
测试结果:
静态工厂模式
相当于多工厂模式的提升, 提供的多个方法通过static修饰 这样不用创建实例可以通过类名直接调用
public class FactoryBean {
// 静态工厂模式(就是给方法加上static,这样就可以通过类名直接调用了)
public static Apple getApple() {
return new Apple();
}
public static Orange getOrange() {
return new Orange();
}
public static Banana getBanana() {
return new Banana();
}
}
public class FactoryTest {
public static void main(String[] args) {
Apple apple = FactoryBean.getApple();
Banana banana = FactoryBean.getBanana();
Orange orange = FactoryBean.getOrange();
apple.product();
banana.product();
orange.product();
}
}
标签:orange 参数 interface lang rgs str apple void 测试结果
原文地址:https://www.cnblogs.com/pgrightwu/p/14110753.html