java设计模式(1)——简单工厂模式
来源:互联网 发布:淘宝图片空间授权管理 编辑:程序博客网 时间:2024/05/22 17:20
简单工厂模式
简单工厂模式属于类的创建型模式,又叫做静态工厂方法模式。通过专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类
模式中包含的角色及其职责
1.工厂(Creator)角色:简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。
2.抽象(Product)角色:简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
3.具体产品(Concrete Product)角色:简单工厂模式所创建的具体实例对象
简单工厂模式的优缺点
在这个模式中,工厂类是整个模式的关键所在。它包含必要的判断
逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的
对象。
用户在使用时可以直接根据工厂类去创建所需的实例,而无
需了解这些对象是如何创建以及如何组织的。有利于整个软件体系
结构的优化。
不难发现,简单工厂模式的缺点也正体现在其工厂类上,由于工厂类集中
了所有实例的创建逻辑,所以“高内聚”方面做的并不好。另外,当系统中的具体产品类不断增多时,可能会出现要求工厂类也要做相应的修改,扩展性并不很好。
代码分析
实体类 Apple.java
public class Apple implements Fruit{ /* * 采集 */ public void get(){ System.out.println("采集苹果"); }}
实体类 Banana.java
public class Banana implements Fruit{ /* * 采集 */ public void get(){ System.out.println("采集香蕉"); }}
接口:Fruit.java
public interface Fruit { /* * 采集 */ public void get();}
工厂类:FruitFactory.java
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")) { //实例化一个Apple对象// return Apple.class.newInstance();// // } else if(type.equalsIgnoreCase("banana")) { //实例化一个Apple对象// return Banana.class.newInstance();// } else {// System.out.println("找不到相应的实例化类");// return null;// }/*newInstance 不是关键字,newInstance() 是java反射框架中类对象(Class)创建新对象的方法。在这个过程中,是先取了这个类的不带参数的构造方法,然后调用构造方法的newInstance来创建对象*/ Class fruit = Class.forName(type); return (Fruit) fruit.newInstance(); }}
测试类 MainClass.java
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
- java设计模式(1)——简单工厂模式
- JAVA设计模式 — 简单工厂模式
- <Java设计模式>—简单工厂模式
- Java设计模式—简单工厂模式
- Java设计模式-工厂模式(1)简单工厂模式
- Java设计模式——工厂模式(简单工厂、工厂方法 、抽象工厂 )
- Java设计模式(一) 设计模式初探——简单工厂和工厂方法模式
- 设计模式(java)——简单工厂模式
- 设计模式(java)2——简单工厂模式
- Java设计模式学习1—简单工厂模式
- Java设计模式之工厂模式——简单工厂
- 设计模式-java工厂模式1(简单工厂模式+工厂方法模式)
- Java设计模式之——简单工厂模式(静态工厂模式)
- java设计模式——简单工厂
- Java设计模式——简单工厂设计模式
- JAVA设计模式--1 简单工厂模式
- 简单工厂模式(java设计模式)
- Java设计模式--工厂模式(简单工厂+工厂方法)
- 第13章 程序的动态加载和执行(一,引导)
- nginx
- JVM垃圾回收机制
- 《电脑选购、组装、维护与故障处理从入门到精通》第一遍读后感
- 51nod 1561 另一种括号序列 单调队列+hash+二分
- java设计模式(1)——简单工厂模式
- python 命名空间
- 矩形图片怎么转换成圆形的图片
- 吃豆子
- Android中监听来电
- java -classpath 与 -jar
- 实验四 Linux系统管理
- Leetcode----- 82.Remove Duplicates from Sorted List II
- python——三道贪心算法例题