设计模式笔记之----工厂模式
来源:互联网 发布:vb 字符串拷贝函数 编辑:程序博客网 时间:2024/04/28 13:09
咳咳,今天继续学习设计模式中的工厂模式。那么工厂模式是为了创建和调用相分离的(new的过程在工厂类,调用者只要调用工厂方法声明去创造就行了),主要是为了创建一个产品的不同方式封装。主要有下面3个类型:
1.简单工厂模式
2.工厂方法模式
3.抽象工厂模式
简单工厂
应该是用的最多,并且也是最简单的模式,只需要把对象生成的方法放在一个工厂类就行了,比如我们android开发的bitmapFactory,为生成bitmap对象封装了一个工厂,我们只需要通过工厂类直接调用就好了,自己也写了一个简单的例子,通过factory创建不同类型的CPU:
package FactoryPattern;public class SimpleFactory { public static void main(String[] args){ CpuInterface cpu = SimpleFactory.createCpu(); CpuInterface cpu2 = SimpleFactory.createSuperCpu(); } public static Cpu createCpu(){ return new Cpu(); } public static SuperCpu createSuperCpu(){ return new SuperCpu(); }}
工厂方法模式
这个用得比较少,用得多的是简单工厂模式。但是工厂方法模式是更加灵活的,要先把工厂方法抽象成接口,然后每个类型的产品都需要一个创建工厂(实现工厂接口)。
使用的时候是这样的:
package FactoryPattern;public class main { public static void main(String[] args){ Cpu cpu = new CpuFactory().createCpu(); SuperCpu superCpu = new SuperCpuFactory().createCpu(); }}
然后CpuFactory和SuperCpuFactory都分别是创建Cpu 和SuperCpu 分别定义的工厂类,他们都是含有createCpu()方法接口的子类:
package FactoryPattern;public interface CpuFactoryInf { CpuInterface createCpu();}
抽象工厂模式
抽象方法在我看来其实就是高级一点的工厂方法,具有抽象的工厂方法接口。抽象工厂网上很多说是创建一个产品簇,产品簇其实是一个含有多个原件组成的产品类型,比如汽车,无论是什么汽车他们的原件都一样,都有发送机,轮胎,座椅等等,但是有好车,有低价位车,唯一区别就是原件类型不同,所以抽象工厂模式是创建不同原料组成的产品类型,也就是产品簇,类似一个品牌的手机,有高端机,低端机。
这里练习的例子是组装手机,目录如下:
我需要创造两个手机,一个huawei,一个xiaomi,于是定义制造手机的接口:
package FactoryPattern.FactoryAbs;import FactoryPattern.FactoryAbs.cpu.CpuInf;public interface MobilePhoneInf { void call(); void setCpu(CpuInf cpu); void setMemory(Memory memory);}
然后定义配件,只定义了cpu、memory,其中cpu分为普通cpu和cpu_hi(华为自己的cpu),然后定义一个工厂接口:
package FactoryPattern.FactoryAbs.factory;import FactoryPattern.FactoryAbs.MobilePhoneInf;public interface MobileFactory { MobilePhoneInf createPhone();}
于是华为手机有华为手机自己的工厂,小米有小米的工厂,每个工厂的createPhone方法不同,也就是组装的方法是自己定义的。于是结果就是:
Huawei huawei = new HuaweiFactory().createPhone(); Xiaomi xiaomi = new XiaomiFactory().createPhone();
调用非常简单,如果需要扩展产品,比如乐视需要做手机,那么只需要定义一个Leshi.java,实现手机接口,然后再定义一个乐视专用的手机工厂就行了,扩展性非常强。
总结:
那么,最后总结一下:
简单工厂模式:
用的最多也是最广的,定义创建一个产品的不同种方法,封装在一个工厂里面,比如富士康,一个厂造很多东西,你只需要发需求就好了。
工厂方法模式:
把每一个类型的创建都定义一个工厂,用自己的工厂创建,比如华为有自己的工厂,三星有自己的工厂,要扩展的话直接创建一个自己的工厂来生产产品。
抽象工厂模式:
这货是一个产品可能有不同类型的原件组成,但是原件组成一样,比如手机,要定义自己的工厂,但是工厂的原件不同,导致出来的产品不同,就像高端机,低端机,原件都一样,但是用料质量不一样。
源码:http://download.csdn.net/detail/cloud_huan/9745212
- 设计模式学习笔记之工厂模式
- 设计模式学习笔记之工厂模式
- 设计模式笔记之---工厂方法模式
- 设计模式笔记之---抽象工厂模式
- 《设计模式》笔记之抽象工厂模式
- 学习笔记:设计模式之工厂模式
- 设计模式笔记之简单工厂模式
- 设计模式笔记之工厂方法模式
- 设计模式笔记之虚拟工厂模式
- 设计模式学习笔记之工厂模式
- java笔记--设计模式之工厂模式
- 学习笔记--设计模式之工厂模式
- 设计模式学习笔记之工厂模式
- 设计模式之禅笔记--工厂模式
- 设计模式笔记之----工厂模式
- Java设计模式笔记之工厂模式
- 设计模式之工厂模式学习笔记
- 设计模式笔记之工厂模式
- Visual Studio C++ Project 配置
- iOS UIGestureRecognizer (手势的基本知识介绍)
- iOS CAAnimation(动画)知识详解
- JDBC转账,使用事务, 回滚到指定的代码段
- 跑马灯效果
- 设计模式笔记之----工厂模式
- windows下fc命令用法
- Android平台美颜相机/Camera实时滤镜/视频编解码/影像后期/人脸技术探索——参考资料
- NOIP 复赛 NOI 上机 机试 评测系统 Arbiter
- 堆(二叉堆)
- 洛谷 1164——小A点菜(动态规划的背包问题)
- flask成长记(二)增强版
- JDBC保存和读取大文本数据类型
- java学习中的一些零碎知识点(一)