一、 写在前面的话
第一次接触到程序设计模式的概念的时候,那还是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来创建的,对外隐藏创建各个学校对象的细节。对外只用暴露工厂类就可以了。以上就是一个简单工厂模式的实现