标签:不能 system sig str ase 引入 业务 anti exception
简单工厂模式属于创建型模式,又叫做静态工厂方法(Static Factory Method)。简单工厂模式是由一个工厂对象决定创建哪一种产品类实例。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为不同工厂模式的一个特殊实现
值得注意的是,简单工厂模式并不属于GOF设计模式之一。但是他说抽象工厂模式,工厂方法模式的基础,并且有广泛得应用
从上图中可以看出,简单工厂模式由三部分组成:具体工厂、抽象产品和具体产品:
public class Apple {
/**
* 采集苹果
*/
public void get(){
System.out.println("采集苹果");
}
}
public class Banana {
/**
* 采集香蕉
*/
public void get(){
System.out.println("采集香蕉");
}
}
public class Mainclass{
public static void main(String[] args){
/**
* 最基本的实例化方式
*/
//实例化一个Apple
Apple apple = new Apple();
//实例化一个Banana
Banana banana = new Banana();
apple.get();
banana.get();
}
}
public interface Fruit {
public void get();
}
public class Apple implements Fruit{
@Override
//重写get方法
public void get(){
System.out.println("采集苹果");
}
}
public class Banana implements Fruit{
@Override
//重写get方法
public void get(){
System.out.println("采集香蕉");
}
}
public class Mainclass{
public static void main(String[] args){
/**
* 多态的实例化方式
*/
Fruit apple = FruitFactory.getApple();
Fruit banana = FruitFactory.getBanana();
apple.get();
banana.get();
}
}
public class FruitFactory {
/**
* 获得Apple类的实例
*/
public static Fruit getApple(){
return new Apple();
}
/**
* 获得Banana类的实例
*/
public static Fruit getBanana(){
return new Banana();
}
}
public interface Fruit {
public void get();
}
public class Apple implements Fruit{
@Override
//重写get方法
public void get(){
System.out.println("采集苹果");
}
}
public class Banana implements Fruit{
@Override
//重写get方法
public void get(){
System.out.println("采集香蕉");
}
}
public class Mainclass{
public static void main(String[] args){
/**
* 通过工厂类的静态方法实例化
*/
Fruit apple = FruitFactory.getApple();
Fruit banana = FruitFactory.getBanana();
apple.get();
banana.get();
}
}
public class FruitFactory {
public static Fruit getFruit(String type) throws IllegalAccessException, ClassNotFoundException, InstantiationException {
/**
* 对参数的判断并返回实例
*/
if (type.equalsIgnoreCase("apple")){
return Apple.class.newInstance();
} else if (type.equalsIgnoreCase("banana")){
return Banana.class.newInstance();
} else {
System.out.println("找不到相应的实例化类");
return null;
}
}
}
public interface Fruit {
public void get();
}
public class Apple implements Fruit{
@Override
public void get(){
System.out.println("采集苹果");
}
}
public class Banana implements Fruit{
@Override
public void get(){
System.out.println("采集香蕉");
}
}
public class Mainclass{
public static void main(String[] args) throws IllegalAccessException, ClassNotFoundException, InstantiationException {
Fruit apple = FruitFactory.getFruit("apple");
Fruit banana = FruitFactory.getFruit("banana");
apple.get();
banana.get();
}
}
public class FruitFactory {
public static Fruit getFruit(String type) throws IllegalAccessException, ClassNotFoundException, InstantiationException {
Class fruit = Class.forName(type);
return (Fruit)fruit.newInstance();
}
}
public interface Fruit {
public void get();
}
public class Apple implements Fruit{
@Override
public void get(){
System.out.println("采集苹果");
}
}
public class Banana implements Fruit{
@Override
public void get(){
System.out.println("采集香蕉");
}
}
public class Mainclass{
public static void main(String[] args) throws IllegalAccessException, ClassNotFoundException, InstantiationException {
Fruit apple = FruitFactory.getFruit("Apple");
Fruit banana = FruitFactory.getFruit("Banana");
apple.get();
banana.get();
}
}
标签:不能 system sig str ase 引入 业务 anti exception
原文地址:https://www.cnblogs.com/MessiXiaoMo3334/p/11600760.html