简单工厂设计模式

传统的使用方法的模式

public class FactoryDemo {
	public static void main(String[] args) {
		Apple apple = new Apple();
		Banane banane = new Banane();
		apple.eat();
		banane.eat();
	}
}
class Apple{
	public void eat() {
		System.out.println("苹果真好吃");
	}
}
class Banane{
	public void eat() {
		System.out.println("香蕉真好吃");
	}
}

使用统一的接口来管理不同的类

public class FactoryDemo1 {
	public static void main(String[] args) {
		Fruit apple = new Apple();
		Fruit banane = new Banane();
		apple.eat();
		banane.eat();
	}
}
interface Fruit{
	void eat();
}
class Apple implements Fruit{
	public void eat() {
		System.out.println("苹果真好吃");
	}
}
class Banane implements Fruit{
	public void eat() {
		System.out.println("香蕉真好吃");
	}
}

使用一个统一的类对象生产车间来管理对象的生产

public class FactoryDemo2 {
	public static void main(String[] args) {
		FruitFatory fatory = new FruitFatory();
		Fruit apple = fatory.getApple();
		Fruit banane = fatory.getBanane();
		apple.eat();
		banane.eat();
	}
}
class FruitFatory{
	public Fruit getApple() {
		return new Apple();
	}
	
	public Fruit getBanane() {
		return new Banane();
	}
}
interface Fruit{
	void eat();
}
class Apple implements Fruit{
	public void eat() {
		System.out.println("苹果真好吃");
	}
}
class Banane implements Fruit{
	public void eat() {
		System.out.println("香蕉真好吃");
	}
}

使用一个工厂来生产多个不一样的水果

public class FactoryDemo3 {
	public static void main(String[] args) {
		Fruit apple = FruitFatory.getApple();
		Fruit banane = FruitFatory.getBanane();
		apple.eat();
		banane.eat();
	}
}
class FruitFatory{
	public static Fruit getApple() {
		return new Apple();
	}

	public static Fruit getBanane() {
		return new Banane();
	}
}
interface Fruit{
	void eat();
}
class Apple implements Fruit{
	public void eat() {
		System.out.println("苹果真好吃");
	}
}
class Banane implements Fruit{
	public void eat() {
		System.out.println("香蕉真好吃");
	}
}

使用工厂的一个方法就能够构建不同的对象

public class FactoryDemo4 {
	public static void main(String[] args) {
		Fruit apple = FruitFatory.getFruit("apple");
		Fruit banane = FruitFatory.getFruit("banane");
		apple.eat();
		banane.eat();
	}
}
class FruitFatory{
	public static Fruit getFruit(String fruitName) {
		if("apple".equalsIgnoreCase(fruitName)) {
			return new Apple();
		}else if("banane".equalsIgnoreCase(fruitName)) {
			return new Banane();
		}else {
			return null;
		}
	}

}
interface Fruit{
	void eat();
}
class Apple implements Fruit{
	public void eat() {
		System.out.println("苹果真好吃");
	}
}
class Banane implements Fruit{
	public void eat() {
		System.out.println("香蕉真好吃");
	}
}

想让你的工厂直接不需要进行频繁的更改,它也可以顺利的生产出我们想要的对象!

public class FactoryDemo5 {
	public static void main(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();
	}
}
class FruitFatory{
	public static Fruit getFruit(String className) throws ClassNotFoundException, InstantiationException, IllegalAccessException {
		Class<?> classObj = Class.forName("lession14.entity."+initClassName(className));
		return (Fruit) classObj.newInstance();
	}
	
	public static String initClassName(String className) {
		StringBuilder sb = new StringBuilder();
		return sb.append((className.charAt(0)+"").toUpperCase()).append(className.substring(1).toLowerCase()).toString();
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值