设计模式-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