设计模式-1-工厂设计模式
来源:互联网 发布:3d照相软件 编辑:程序博客网 时间:2024/05/21 01:44
定义:工厂方法模式(FACTORY METHOD)是一种常用的对象创建型设计模式,此模式的核心精神是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用和方便后期维护拓展的目的。它的核心结构有四个角色,分别是抽象工厂;具体工厂;抽象产品;具体产品(百度的定义)
自己理解:
就是多个类似的子类继承同一个接口父类,对其父类中的变量进行操作;工厂类负责判断、控制哪个子类被执行,而工厂类调用子类完成后,返回的结果是该子类的父类,该父类中的变量已经被操作过了,访问该父类,得到我们想要的结果。
这里我用一个例子详细描述,就以程序员编程序
1.先建立一个程序接口类
public interface Program {//首先定义是程序,我们简单点,一个程序最起码可以运行 public void running();}
2定义一个音乐之类
public class MusicProgram implements Program { // 音乐程序,运行就可以听音乐了音乐了 @Override public void running() { // TODO Auto-generated method stub System.out.println("听个程序员的春天吧……啦啦啦啦啦,我是程序员,我爱敲代码"); }}
……还可以接着定义视频程序子类和上面差不多
3.定义一个工厂类,来负责判断、控制哪个子类被执行
public class ProgramFactory { public static Program createProgram(Class c) { Program program = null; try { program = (Program) Class.forName(c.getName()).newInstance(); } catch (InstantiationException e) { System.out.println("必须指定程序的类型"); } catch (IllegalAccessException e) { // 定义的程序有问题,那就编不出来了,这是... System.out.println("程序定义错误!"); } catch (ClassNotFoundException e) { // 你随便说程序,现在还没有,我到哪里给你制造去?! System.out.println("哎,你指定的程序找不到!"); } return program; }}
4.最后是我们的程序员类
public class Programmer { // 程序来开始编程了 public static void main(String[] args) { System.out.println("来找个视频软件"); Program moviceProgram = ProgramFactory .createProgram(VideoProgram.class); moviceProgram.running(); System.out.println("来找个音乐软件"); Program musicProgram = ProgramFactory.createProgram(MusicProgram.class); musicProgram.running(); }}
总结:
之类变化: 接口不变
使用设计模式的一大好处就是可以很容易地对父类做出改变, 利于扩展,而不会破坏更大的程序. 之所以能够容易地做出改变, 秘诀在于保持接口不变, 而只改变内容
0 0
- 设计模式1(工厂模式)
- 设计模式1:工厂模式
- 设计模式(1): 工厂模式
- 设计模式--[1]工厂模式
- 设计模式1-工厂模式
- 简单工厂设计模式-设计模式(1)
- 简单工厂设计模式-设计模式(1)
- 设计模式之工厂设计模式-1
- 设计模式-1-工厂设计模式
- 设计模式--工厂设计
- 设计模式------工厂模式
- 设计模式------工厂模式
- 设计模式 [ 工厂模式 ]
- 设计模式--工厂模式
- 设计模式-工厂模式
- 设计模式--工厂模式
- 设计模式 工厂模式
- 设计模式-工厂模式
- Unity 游戏皇家消消乐Android版
- Storyboard全解析-第二部分
- es横向扩展设计的引言
- 二叉树的相关程序 Java
- Android 动画——Frame Animation与Tween Animation
- 设计模式-1-工厂设计模式
- Win7+CentOS6双系统开机后出现grub
- 指针方法的数据交换
- C/C++堆和栈的区别
- 03软件需求说明书
- iOS开发脚踏实地学习day11-导航控制器
- 任务,责任,过错之间的平衡问题
- 一个fork的面试题
- 达内学习日志Day07:对象和类