设计模式之简单工厂模式

一、 写在前面的话

        第一次接触到程序设计模式的概念的时候,那还是15年下半年大四快了毕业了找实习工作的时候,当时投了简历,做完面试题之后去面试很多面试官都会问你知不知道设计模式。反正当时是一脸懵逼,于是就说了不知道,面试肯定没过,面试官安慰着说你可以下去看看,不用说,面试又被刷了。大学专业是电子信息工程,专业属于软硬件结合那种,但是硬件知识比较多,软件的学习也没有真正像程序设计那些专业一样系统的学习,只是学习了一些皮毛,直到后来学习java之后,当时看的第一本书是《java编程思想》,很惭愧,看了大概两个月之后就断下来了,那本书就看了一大半左右,直到现在都还有后面很多部分没有看完。就这样到了工作快2年的时候,前面一年的时间基本上就是经常加班那种。过完年回来之后才慢慢的加班少了下来。于是开始去学习了,一下子买了三本书,《Effective Java》,《大话设计模式》,《spring源码深度解析》,利用每天睡觉前半小时时间,花了大半个月看了《Effective Java》,《大话设计模式》到现在看了大半。自己尝试着写设计模式相关的博客,从工厂模式开始,如果各位在观看的过程中看到了有写的不对的地方,或者可以改进的地方,欢迎大家给我指导出来。

二、 设计模式之简单工厂模式

        工厂模式在各种代码设计中基本上随处可见,最常见的莫过于spring里面的bean管理了,利用这个模式进行bean的管理。工厂模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。下面来实现一个简单的工厂模式。首先定义一个生产对象(学校接口)

/**'
 *  工厂生产对象(学校)
 */
public interface School {

    /**
     * 展示是哪个学校
     */
    public void show();
}
 

下面是几个实现类:

public class SchoolA implements School {
    @Override
    public void show() {
        System.out.println("我是A学校");
    }
}
public class SchoolB  implements School{
    @Override
    public void show() {
        System.out.println("我是B学校!");
    }
}
public class SchoolC implements School {
    @Override
    public void show() {
        System.out.println("我是C学校!");
    }
}

简单工厂类:

public class SchoolFactory {

    public static School createSchoolFactory(String flag) {
        switch (flag){
            case "A":
                return new SchoolA();
            case "B":
                return new SchoolB();
            default:
                return new SchoolC();
        }
    }
}

简单测试类:

public class SimpleMain {

    public static void main(String[] args) {
        String flag = "A";
        School school = SchoolFactory.createSchoolFactory(flag);
        school.show();
        flag = "B";
        school = SchoolFactory.createSchoolFactory(flag);
        school.show();
        flag = "C";
        school = SchoolFactory.createSchoolFactory(flag);
        school.show();
    }
}

输出:

这样可以看到,所有的学校对象都是通过学校工厂SchoolFactory类的createSchoolFactory来创建的,对外隐藏创建各个学校对象的细节。对外只用暴露工厂类就可以了。以上就是一个简单工厂模式的实现

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值