设计模式(设计模式)是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结。使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应的,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。
总体来说设计模式分为三大类:
创建型模式,共五种:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。
结构型模式,共七种:适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。
行为型模式,共十一种:策略模式,模板方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,中介者模式,解释器模式。
其实还有两类:并发型模式和线程池模式。用一个图片来整体描述一下:
从这一块开始,我们详细介绍JAVA中23种设计模式的概念,应用场景等情况,并结合他们的特点及设计模式的原则进行分析。
工厂方法模式分为三种:
,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先看下关系图:
<李>
公共接口发送方{
李> <李>公共空间发送();李李
> <>}
李>其次,创建实现类:
- <李>
公共类MailSender实现发送者{
李> <李>@Override
李> <李>公共空间发送(){
李> <李>system . out。println(“这是mailsender !”);李李
> <>}
李> <李>}
李> <李>公共类SmsSender实现发送者{
李> <李>李> <李>
@Override
李> <李>公共空间发送(){
李> <李>system . out。println(“这是短信发送方!”);李李
> <>}
李> <李>}
李>最后,建工厂类:
- <李>
公共类SendFactory {
李> <李>李> <李>
公共发送方生产(String类型){
李> <李>如果(“邮件”.equals(类型)){
李> <李>返回新MailSender ();李李
> <>} else if(“短信”.equals(类型)){
李> <李>返回新SmsSender ();李李
> <>其他}{
李> <李>System.out.println(“请输入正确的类型!”);李李
> <>返回null;李李
> <>}
李> <李>}
李> <李>}
李>我们来测试下:
- <李>
公共类FactoryTest {
李> <李>李> <李>
公共静态void main (String [] args) {
李> <李>SendFactory工厂=new SendFactory ();李李
> <>发送方发送方=factory.produce (sms);李李
> <>sender.Send ();李李
> <>}
李> <李>}
李>输出:这是短信发送者!
,是对普通工厂方法模式的改进,在普通工厂方法模式中,如果传递的字符串出错,则不能正确创建对象,而多个工厂方法模式是提供多个工厂方法,分别创建对象。关系图:
:: __IHACKLOG_REMOTE_IMAGE_AUTODOWN_BLOCK__:: 2
将上面的代码做下修改,改动下SendFactory类就行,如下:
公共类SendFactory {
公共发送方produceMail () {
- <李>
返回新MailSender ();李李
> <>}
李> <李>李> <李>
公共发送方produceSms () {
李> <李>返回新SmsSender ();李李
> <>}
李> <李>}
李>测试类如下:
- <李>
公共类FactoryTest {
李> <李>李> <李>
公共静态void main (String [] args) {
李> <李>SendFactory工厂=new SendFactory ();李李
> <>发送方发送方=factory.produceMail ();李李