Java设计模式之禅
工作了也有小五年了,从刚大学毕业出来,什么都不懂的小白,到能独立保质保量完成开发任务的核心员工,设计模式真的是能反映出一个人的代码能力和设计能力,我到目前接触和使用在项目中的有,责任链模式(乾隆下江南,你要怎么安排万岁爷的行程?通过责任链来实现,挺有意思的,其实就是不知道责任在谁那里 ),观察者模式(一个对象发生改变,另一个对象随着此对象的改变而改变),模版模式(父类只管提供思路,具体怎么干,子类自己去干),工厂模式这里就不提了,使用的太广了,还有一个策略模式(替换到大量if-else,让代码看起来优雅,这是绝大数的开发人员追寻的目标),java有23中设计模式,模式里又分结构型和创建型两大类,设计模式的使用,不是一朝一夕就能领略到其的风采,需要开发人员的再实际使用的时候,多思考多领悟,加油,打工人!!!
1、Iterator模式----一个一个遍历
1)迭代器模式以顺序方式访问集合对象的元素,而不知道其底层表示。
2)迭代器模式是行为模式之一。
2、Adapter模式----加个适配器,以便于复用
Adapter模式有两种:类适配器模式(使用继承的适配器)、对象适配器模式(使用委托的适配器)
1)使用继承的适配器 extends A implements B interface使用比较普遍
2)使用委托的适配器 extends A reference B controller中使用ftp工具类
3)适配器模式是一种结构模型,适配器是两个不兼容实体之间的转换器。是两个不兼容接口之间的桥梁。
3、Template Method模式--------将具体处理交给子类
1)父类抽象类中公开几个抽象方法供子类去实现。在父抽象类中有另一个方法或几个方法使用抽象方法来实现业务逻辑。
2)抽象方法通常用于父类所需的每个步骤。
3)模版方法模式是行为模式。
4、Factory Method模式---------将实例的生成交给子类
1)在工厂模式中,我们创建对象而不将创建逻辑暴露给客户端。
2)核心工厂模式是一个Factory类,ShapeFactory类基于传递给getShape()方法的String值创建Shape对象。
如果String值为CIRCLE,它将创建一个Circle对象。
5、Singleton模式----------只有一个实例
1)单例模式是一种创建模式。这种模式只涉及一个单独的类,它负责创建自己的对象。
2)该类确保只创建单个对象。这个类提供了一种访问其唯一对象的方法。
6、Prototype模式--------通过复制生成实例
1)原型模式是创建模式之一。
2)原型模式有助于创建具有更好性能的重复对象。
3)在原型模式中,我们将返回一个现有对象的克隆,而不是创建一个新的对象。
4)我们使用原型创建模式,如果创建一个新对象的成本是昂贵和资源密集型。
7、Builder模式-----------组建复杂的实例
1)用于使用简单对象创建复杂对象,它从小而简单的对象逐步创建更大的对象。
2)生成器模式是另一个创建模式。
8、Abstract Factory模式--------将关联零件组装成产品
1)抽象工厂模式是另一种创建模式。
2)抽象工厂模式,也称为工厂的工厂,有一个工厂创建其他工厂。当使用抽象工厂模式时,
我们首先使用超级工厂创建工厂,然后使用创建的工厂创建对象。
9、Bridge模式---------将类的功能层次结构与实现层次结构分离
1)将定义与实现相分离。它是一种结构模式。
2)此模式涉及充当桥梁的接口。桥使得具体类与接口实现类无关。
3)这两种类型的类可以改变而不影响对方。
10、Strategy模式--------整体的替换算法(替换大量的if-else)
1)可以在运行时更改算法
2)策略模式是一种行为模式
3)在策略模式中,我们创建表示各种算法的对象和运行算法的上下文对象
4)策略对象更改上下文对象上的算法
11、Composite模式-------容器和内容的一致性
1)组合模式是一种结构模式,因为它创建了一组对象的树状结构
2)组合模式将一组对象视为单个对象
3)使用一个类来表示树结构
4)在组合模式中,我们将创建一个包含自己对象的类的组
12、Decorator模式-------装饰边框与被装饰物的一致性
1)装饰模式在不链接其结构的情况下,向现有对象添加新的功能
2)它是一种结构模型,因为它充当现有类的包装器
3)装饰模式创建一个装饰器来包装原始类并提供其他功能
13、Visitor模式-------访问数据结构并处理数据
1)在访问者模式中,元素对象接收访问者对象,而访问者对象处理元素对象上的操作
2)此模式是一种行为模式
3)通过这种方式,可以从不同的访问者改变元素的执行算法。
14、Chain of Responsibility------推卸责任
1)责任链为请求创建一个接收者对象列表
2)这种模式是行为模式
3)当使用责任链模式时,通常每个接收器都包含对另一个接收器的引用。
4)如果一个对象不能处理请求时,则它将相同的对象传递给下一个接收者,等等。
15、Facade模式------简单窗口
1)隐藏了系统的复杂性
2)提供了一个简单的接口,客户端使用接口与系统交互。
3)外观模式是结构型模型。
16、Mediator模式----只有一个仲裁者
1)减少多个对象之间的通信
2)此模式提供了一个处理不同类之间的所有通信的中介类
3)中介者模式属于行为模式类别
17、Observer模式-----发送状态变化通知
1)观察者模式用于在一个对象被修改时通知其相关对象
2)观察者模式是一种行为模式类别。
18、Memento模式--------保存对象的状态
1)备忘录模式,是一种行为模式
2)在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象外保存这个状态,这样以后可将此对象恢复成原来的状态。
3)把角色属性的保存封装在单独的类中,体现“职责分离”。
19、State模式---------用类表示状态
1)类行为基于其状态而改变
2)状态模式是一种行为模式
3)当使用状态模式时,我们创建各种状态对象和上下文对象,其行为随着状态对象改变而改变。
20、Flyweight模式---------共享对象,避免浪费
1)享元模式,是一种结构模式
2)提供了减少对象数量从而改善应用所需的对象结构的方式,运用共享技术有效地支持大量细粒度的对象
21、Proxy模式----------只在必要时生成实例
1)一个类代表另一个类的功能
2)代理模式是一种结构模型
3)我们创建具有原始接口的对象,以将其功能暴露给外部世界。
22、Command模式-------命令也是类
1)命令模式是数据驱动设计模式,它是行为模式之一
2)请求被作为命令的对象包装传递给invoke对象
3)invoke对象将命令传递给相应的对象并且该对象执行该命令
23、Interpreter模式-------语法规则也是类
1)通常使用解释器模式来评估语言语法或表达
2)这种类型的模式是行为模式类别之一
知人者智,自知者明,胜人者有力,自胜者强。