设计模式小结-工厂模式(Factory Pattern)
前言:作为一个程序员,哪怕是刚入行的程序员,对于设计模式都会有所认识,那设计模式到底是什么呢?笔者的理解是,每一种设计模式是对于一种重复性工作的解决方式,能够简化工作效率,提高编码能力,当然了,这只是笔者自己对于设计模式的一点点理解。
设计模式遵循六大原则,这个是通用的原则,本文就不作具体的原则介绍了,这里只是简单介绍一下,设计模式遵循的总原则:开闭原则,就是在设计代码的时候,尽量做到,代码能够很好的支持可扩展性,达到"接口"的作用,在实现新功能的时候,不需要去修改之前的代码,只需要实现这个"接口",就能达到目的,便于代码的维护以及功能升级。
设计模式的分类:总的来说,设计模式按照类型来分的话,分为三类:
1. 创建性模式:单例模式,工厂模式,抽象工厂模式,建造者模式,原型模式
2. 结构性模式:适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式
3. 行为性模式:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式
本文讲解工厂模式:工厂模式的出现是解决当出现了大量的实现了共同的接口的对象需要被创建时,可以通过工厂方法创建
工厂模式实现思路如下:
1. 多个类都需要实现同一个接口,只是处理方法不同,创建多个实现了共同接口的类
2. 建立一个生产工厂接口,方法返回一个1中的共同的接口类
3. 创建不同的工厂类,实现2中的生产工厂接口,返回不同1中的实现类
代码如下:
package com.ctp.ghub.designpattern.factory; /** * Created by Administrator on 2018/7/1 0001. */ public interface Sender { /** * 共同接口的方法 */ public void send(); }
package com.ctp.ghub.designpattern.factory; /** * Created by Administrator on 2018/7/1 0001. */ public class MailSender implements Sender{ @Override public void send() { System.out.print("MailSender send message !!!"); } }
package com.ctp.ghub.designpattern.factory; /** * Created by Administrator on 2018/7/1 0001. */ public class SmsSender implements Sender{ @Override public void send() { System.out.print("SmsSender send message !!!"); } }
package com.ctp.ghub.designpattern.factory; /** * Created by Administrator on 2018/7/1 0001. */ public interface Provider { public Sender produce(); }
package com.ctp.ghub.designpattern.factory; /** * Created by Administrator on 2018/7/1 0001. */ public class SmsProviderFactory implements Provider{ @Override public Sender produce() { return new SmsSender(); } }
package com.ctp.ghub.designpattern.factory; /** * Created by Administrator on 2018/7/1 0001. */ public class MailProviderFactory implements Provider{ @Override public Sender produce() { return new MailSender(); } }
测试类:生产SmsSender类
生产MailSender类
这种做法的好处是,如果有新的实现类要实现接口,只需要添加新的实现类(完成相应逻辑的实现),然后再添加一个新的工厂生产类,生产这种实现类即可