设计模式之简单工厂模式

来源:互联网 发布:ifind金融数据库 编辑:程序博客网 时间:2024/06/03 22:42

单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。

1.工厂(Creator)角色 简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。
2.抽象(Product)角色 简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口
3.具体产品(Concrete Product)角色 简单工厂模式所创建的具体实例对象

优缺点:

在这个模式中,工厂类是整个模式的关键所在。它包含必要的判断
逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的
对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无
需了解这些对象是如何创建以及如何组织的。有利于整个软件体系
结构的优化。
不难发现,简单工厂模式的缺点也正体现在其工厂类上,由于工厂类集中
了所有实例的创建逻辑,所以“高内聚”方面做的并不好。另外,当系统中的
具体产品类不断增多时,可能会出现要求工厂类也要做相应的修改,扩展
性并不很好。

public class Apple implements Fruit{/* * 采集 */public void get(){System.out.println("采集苹果");}}

public class Banana implements Fruit{public void get(){System.out.println("采集香蕉");} 
public class FruitFactory {///*// * 获得Apple类的实例// *///public static  Fruit getApple() {//return new Apple();//}/////*// * 获得Banana类实例// *///public static Fruit getBanana() {//return new Banana();//}/* * get方法,获得所有产品对象 */public static Fruit getFruit(String type) throws InstantiationException, IllegalAccessException, ClassNotFoundException {//if(type.equalsIgnoreCase("apple")) {//return Apple.class.newInstance();////} else if(type.equalsIgnoreCase("banana")) {//return Banana.class.newInstance();//} else {//System.out.println("找不到相应的实例化类");//return null;//}Class fruit = Class.forName(type);return (Fruit) fruit.newInstance();}}

}


public interface Fruit {/* * 采集 */public void get();}


public class MainClass {public static void main(String[] args) throws InstantiationException, IllegalAccessException, ClassNotFoundException {////实例化一个Apple//Apple apple = new Apple();////实例化一个Banana//Banana banana = new Banana();////apple.get();//banana.get();////实例化一个Apple,用到了多态//Fruit apple = new Apple();//Fruit banana = new Banana();//apple.get();//banana.get();////实例化一个Apple//Fruit apple = FruitFactory.getApple();//Fruit banana = FruitFactory.getBanana();//apple.get();//banana.get();Fruit apple = FruitFactory.getFruit("Apple");Fruit banana = FruitFactory.getFruit("Banana");apple.get();banana.get();}}


0 0
原创粉丝点击