设计模式-1-工厂设计模式

定义:工厂方法模式(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();
    }
}

总结:
之类变化: 接口不变
使用设计模式的一大好处就是可以很容易地对父类做出改变, 利于扩展,而不会破坏更大的程序. 之所以能够容易地做出改变, 秘诀在于保持接口不变, 而只改变内容

你可能感兴趣的:(设计模式)