读书笔记之工厂方法模式以及简单工厂模式
来源:互联网 发布:淘宝直播c店能开么 编辑:程序博客网 时间:2024/05/23 12:48
工厂方法模式介绍
工厂方法模式是创建型模式之一.在任何需要生成复杂对象的地方,都可以用工厂方法模式.比如一款产品有很多种类,如果每一个种类都用new来创建对象,那么就偏离了六大原则,所以就定义一个工厂类,通过这个类来完成产品的创建,这样当有新的产品需要生产时也只需要修改工厂类的代码.
工厂方法模式的简单实现
1.首先定义产品接口
public interface Product{ //产品的方法,由子类实现 void method();}
2.定义具体的子类产品
public class ProductA implement Product{ public void method(){ System.out.println("我是产品A"); }}public class ProductB implement Product{ public void method(){ System.out.println("我是产品B"); }}public class ProductC implement Product{ public void method(){ System.out.println("我是产品C"); }}
3.定义工厂接口
public interface Factory{ //创建产品的方法 <T>Product createProduct(Class<T> clazz);}
4.创建具体的工厂类
public class CreateFactory implement Factory{ public <T extend Product> T createProduct(Class<T> clazz){ Product p =null; try{ //通过反射动态创建对象,当然这里可以根据clazz判断,然后分别new出对象 p =(Product)Class.froName(class.getName()).newInstance(); }catch(Exception e){ e.printStackTrace(); } return (T)p; }}
5.在Client利用工厂类创建具体的对象
public class Client{ public static void main(String[] args){ Factory fcatory = new CreateFactory(); Product p = factory.createProduct(ProductA.class); p.method(); }}
这样在实际的代码中只需要创建工厂类的对象,然后调用工厂类中创建产品的方法,根据传入的参数就可以创建对应的产品了,这样即使要创建不同的产品也只要修改createProduct的参数即可.尽可能的满足了封闭原则.
简单工厂模式
在上面的工厂方法模式中唯一麻烦点的就是还要定义工厂类的接口,创建工厂类的具体对象才能创建对应的产品.为了更加方便的调用工厂的方法.我们可以将工厂类如下定义:
“`
public class CreateFactory {
public static <T extend Product> T createProduct(Class<T> clazz){ Product p =null; try{ //通过反射动态创建对象,当然这里可以根据clazz判断,然后分别new出对象 p =(Product)Class.froName(class.getName()).newInstance(); }catch(Exception e){ e.printStackTrace(); } return (T)p;}
}“`
就是去掉了工厂接口的定义,同时将创建产品的方法定义成静态的这样,在实际代码中就可以直接通过类名定义了,但是这种情况一般是适用于工厂类只有一种创建产品的方法,为了方便就这样简写的,这样的模式就是简单工厂模式.
总结
工厂模式虽然简单,但是在我们的android中确用的非常之多,比如Bitmap的创建就是用的工厂方法BitmapFactory来创建的.
阅读全文
0 0
- 读书笔记之工厂方法模式以及简单工厂模式
- java设计模式之工厂方法模式以及简单工厂模式还有抽象工厂模式
- 【趣解】工厂模式之简单工厂、工厂方法模式
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- java设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- 设计模式理解之工厂模式(简单工厂模式、工厂方法模式、抽象工厂模式)
- JAVA设计模式之工厂模式(简单工厂模式+工厂方法模式+抽象工厂模式)
- 读书笔记--工厂方法模式
- 工厂模式以及工厂方法
- 6.java设计模式(读书笔记)简单工厂模式、工厂方法模式、抽象工厂模式
- 工厂模式之 简单工厂模式,工厂方法模式,抽象工厂模式
- java学习之工厂模式(简单工厂模式,工厂方法模式,抽象工厂模式)
- 7.1 C++中数字与字符串之间的转换(转)
- iOS UIimage对象的生成
- Java生成随机字符串
- 美国教授写给被开除的中国学生的一封信!令人深思!
- iOS开发 字符串中截取关键字并给他设置颜色
- 读书笔记之工厂方法模式以及简单工厂模式
- AndroidStudio、gradle、buildToolsVersion关系
- 朴素贝叶斯入门---Naive Bayes
- Navicat 在添加mysql表的外键时报错1005,error150,
- UDP通信之窗口实现
- 【MyBatis学习10】高级映射之多对多查询
- 虚拟现实进入教育
- linux split命令分割文件
- 视频压缩编码和音频压缩编码的基本原理