设计模式-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();
    }
}

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

记住我的名字啊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值