publicclassFactoryDemo{publicstaticvoidmain(String[] args){
Apple apple =newApple();
Banane banane =newBanane();
apple.eat();
banane.eat();}}classApple{publicvoideat(){
System.out.println("苹果真好吃");}}classBanane{publicvoideat(){
System.out.println("香蕉真好吃");}}
使用统一的接口来管理不同的类
publicclassFactoryDemo1{publicstaticvoidmain(String[] args){
Fruit apple =newApple();
Fruit banane =newBanane();
apple.eat();
banane.eat();}}interfaceFruit{voideat();}classAppleimplementsFruit{publicvoideat(){
System.out.println("苹果真好吃");}}classBananeimplementsFruit{publicvoideat(){
System.out.println("香蕉真好吃");}}
使用一个统一的类对象生产车间来管理对象的生产
publicclassFactoryDemo2{publicstaticvoidmain(String[] args){
FruitFatory fatory =newFruitFatory();
Fruit apple = fatory.getApple();
Fruit banane = fatory.getBanane();
apple.eat();
banane.eat();}}classFruitFatory{public Fruit getApple(){returnnewApple();}public Fruit getBanane(){returnnewBanane();}}interfaceFruit{voideat();}classAppleimplementsFruit{publicvoideat(){
System.out.println("苹果真好吃");}}classBananeimplementsFruit{publicvoideat(){
System.out.println("香蕉真好吃");}}
使用一个工厂来生产多个不一样的水果
publicclassFactoryDemo3{publicstaticvoidmain(String[] args){
Fruit apple = FruitFatory.getApple();
Fruit banane = FruitFatory.getBanane();
apple.eat();
banane.eat();}}classFruitFatory{publicstatic Fruit getApple(){returnnewApple();}publicstatic Fruit getBanane(){returnnewBanane();}}interfaceFruit{voideat();}classAppleimplementsFruit{publicvoideat(){
System.out.println("苹果真好吃");}}classBananeimplementsFruit{publicvoideat(){
System.out.println("香蕉真好吃");}}
使用工厂的一个方法就能够构建不同的对象
publicclassFactoryDemo4{publicstaticvoidmain(String[] args){
Fruit apple = FruitFatory.getFruit("apple");
Fruit banane = FruitFatory.getFruit("banane");
apple.eat();
banane.eat();}}classFruitFatory{publicstatic Fruit getFruit(String fruitName){if("apple".equalsIgnoreCase(fruitName)){returnnewApple();}elseif("banane".equalsIgnoreCase(fruitName)){returnnewBanane();}else{return null;}}}interfaceFruit{voideat();}classAppleimplementsFruit{publicvoideat(){
System.out.println("苹果真好吃");}}classBananeimplementsFruit{publicvoideat(){
System.out.println("香蕉真好吃");}}
想让你的工厂直接不需要进行频繁的更改,它也可以顺利的生产出我们想要的对象!
publicclassFactoryDemo5{publicstaticvoidmain(String[] args)throws ClassNotFoundException, InstantiationException, IllegalAccessException {
Fruit apple = FruitFatory.getFruit("apple");
Fruit banane = FruitFatory.getFruit("banane");
Fruit pear = FruitFatory.getFruit("pear");
apple.eat();
banane.eat();
pear.eat();}}classFruitFatory{publicstatic Fruit getFruit(String className)throws ClassNotFoundException, InstantiationException, IllegalAccessException {
Class<?> classObj = Class.forName("lession14.entity."+initClassName(className));return(Fruit) classObj.newInstance();}publicstatic String initClassName(String className){
StringBuilder sb =newStringBuilder();return sb.append((className.charAt(0)+"").toUpperCase()).append(className.substring(1).toLowerCase()).toString();}}