简单说两句
本文首发公众号【一名打字员】
对不住各位老铁了,年前说好要更几波JAVA的东西,又偷懒了,没办法,在这里用小锤锤偷偷锤了自己几下。由于工作原因,更新时间不定,各位老铁有问题可以私聊我哈。
对于初学者或者是正在向中高级的Java程序猿(打字员)来说,时刻梳理自己所掌握的知识是十分重要的,近期本打字员会整理一下关于J2EE下面的几种常用的设计模式,并逐个解析,希望大家能够一起巩固一下相关掌握的知识点。
为什么要用设计模式
相信很多人都有这个疑问,有的人说在50万行以下的项目中,设计模式基本是没有用的。当然,除了让我们code显得更加专业之外,在自己所学习或者工作的项目中,适当合理的使用设计模式,能够给项目带来很大的好处。首先,使用了合理的模式,团队里进行沟通协作会很方便,交流成本有时候特别高,特别是在程序员之间。其次恰当的使用设计模式可以用以解决特定场景的问题的一系列方法,帮助我们改善系统的设计,增强系统的健壮性、可扩展性,为以后铺平道路。
最后用网络上的一句概括来说,设计模式(Designpattern)就是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
模式概览
在实际的学习或者工作中,大家或多或少的会接触或者使用一些Java的设计模式,在Java中存在23种设计模式,其图如下:
其中主要分为三大类:
创建型模式
结构型模式
行为型模式
在文末会贴出所有的设计模式,其中本打字员映象里自己常用的模式一般有:
- 工厂模式、工厂方法模式、抽象工厂模式、单例模式等,这些都属于创建型模式。
- 观察者模式,模版模式,策略模式等,这些都属于行为型模式。
- 包装模式,适配器模式,组合模式,代理模式等,这些属于结构型模式。
六大原则
在学习使用设计模式的时候,我们需要了解这六大原则:
单一原则
意思就是,我们在编写bug,不对,编写代码的时候在一个功能类中尽量负责单一的功能,这个功能应当尽量的烤炉周全,保持极致。
里氏替换原则
这个原则可能大家乍一眼不怎么能够理解,与C#中里氏替换原则一致,这个意思就是一个子类能够替换父类并且能够正常的工作。有机智的童鞋要举手提问了,那Java中的多态会不会违背这种原则呢,其实不然。所谓的里氏替换原则就是让你的某一段程序耦合于基类或者接口,而不是具体继承了基类的子类或实现接口的具体类型。仅替换子类不会让你这个程序的属性有所改变。所谓多态机制,则是给了你达成上述原则的其中一种能力。
接口隔离原则
这个应该比较好理解,见字如意。这个接口也叫做接口最小化原则,强调的是一个接口拥有的行为应该尽可能的小。
依赖倒置原则
这个强调了高层模块不该依赖于低层模块,二者都应该依赖于抽象,抽象不应该依赖于细节,细节应该依赖于抽象。
迪米特原则
也称最小知道原则,即一个类应该尽量不要知道其他类太多的东西,不要和陌生的类有太多接触。
开闭原则
其实本打字员也对这个原则有点模糊,但是大体的意思就是一句话对修改关闭,对扩展开放。在网上浏览相关文章的时候提到过一句在大话设计模式中出现的总结,“用抽象构建框架,用细节实现扩展”。我想这句话也许是对整体的原则做出的最好的解释了吧。
写在最后
说实话,本打字员也不知道自己何时放弃,会停止编程,会不再撸代码,因为这份工作对精神上的消耗确实很大。但是既然我们依然坚持在这个岗位上,我们就应该本着一名程序员的心态,去学习新的技术与知识,维护和巩固现有的知识点,为成为自己想象中的自己而努力吧。
附:
模式 | 名称 | 所属分类 |
---|---|---|
Abstract Factory | 抽象工厂模式 | 创建型 |
Builder | 建造模式 | 创建型 |
Factory Method | 工厂方法模式 | 创建型 |
Prototype | 原始模型模式 | 创建型 |
Singleton | 单例模式 | 创建型 |
Adapter | 适配器(变压器)模式 | 结构型 |
Bridge | 桥梁模式 | 结构型 |
Composite | 合成模式 | 结构型 |
Decorator | 装饰模式 | 结构型 |
Facade | 门面模式 | 结构型 |
Flyweight | 享元模式 | 结构型 |
Proxy | 代理模式 | 结构型 |
Chain Of Responsibility | 责任链模式 | 行为型 |
Command | 命令模式 | 行为型 |
Interpreter | 解释器模式 | 行为型 |
Iterator | 迭代子模式 | 行为型 |
Mediator | 调停者模式 | 行为型 |
Memento | 备忘录模式 | 行为型 |
Observer | 观察者模式 | 行为型 |
State | 状态模式 | 行为型 |
Strategy | 策略模式 | 行为型 |
Template Method | 模板方法模式 | 行为型 |
Visitor | 访问者模式 | 行为型 |
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。