经典框架中的设计模式JAVA 23种设计模式入门到精通

设计模式(设计模式)是一套被反复使用,多数人知晓的,经过分类编目的,代码设计经验的总结。使用设计模式是为了可重用代码,让代码更容易被他人理解,保证代码可靠性。毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理的运用设计模式可以完美的解决很多问题,每种模式在现在中都有相应的原理来与之对应的,每一个模式描述了一个在我们周围不断重复发生的问题,以及该问题的核心解决方案,这也是它能被广泛应用的原因。经典框架中的设计模式JAVA 23种设计模式入门到精通

总体来说设计模式分为三大类:

创建型模式,共五种:工厂方法模式,抽象工厂模式,单例模式,建造者模式,原型模式。

结构型模式,共七种:适配器模式,装饰器模式,代理模式,外观模式,桥接模式,组合模式,享元模式。

行为型模式,共十一种:策略模式,模板方法模式,观察者模式,迭代子模式,责任链模式,命令模式,备忘录模式,状态模式,访问者模式,中介者模式,解释器模式。

其实还有两类:并发型模式和线程池模式。用一个图片来整体描述一下:

经典框架中的设计模式JAVA 23种设计模式入门到精通


从这一块开始,我们详细介绍JAVA中23种设计模式的概念,应用场景等情况,并结合他们的特点及设计模式的原则进行分析。

工厂方法模式分为三种:

,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。首先看下关系图:

经典框架中的设计模式JAVA 23种设计模式入门到精通”> <br/> </p> <p> <br/> </p> <p>举例如下:(我们举一个发送邮件和短信的例子)</p> <p>首先,创建二者的共同接口:</p> <ol类= <李>

公共接口发送方{

<李>

公共空间发送();李李

<>

}

其次,创建实现类:

<李>

公共类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 ();李李

经典框架中的设计模式JAVA 23种设计模式入门到精通