架构 - 面向对象的设计模式 - 总结

发布于: 2020 年 06 月 24 日

Date:  2020/6/24    V1.0

Author:Jessie



本文对本周架构师中面向对象的设计模式进行总结。

面向对象的设计模式

设计模式定义

设计模式是一种抽象出来的可重复使用的解决方案。

面向对象的目标:完成强内聚、低耦合。而这些原则,通过设计模式来落地。

 

分类:

1.   功能分类

创建模式:对类的实例化过程的抽象。

如:单例模式、创建工厂模式等。

结构模式:对类或对象组合在一起形成更大的结构。

如:适配器模式、桥接模式、组合模式、装饰模式、外观模式、享元模式、代理模式。

行为模式:对在不同对象间划分责任和算法的抽象。

如:职责模式、命令模式、解释器模式、迭代器模式、中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式、访问者模式。

2.   方式分类:

类模式:以集成的方式,静态的。(一般不建议用)

对象模式:以组合方式实现模式的,动态的。

 

工厂模式



简单工厂模式,类似Spring IOC。

缺点:系统扩展困难,一旦添加新产品就不得不修改工厂逻辑,同样破坏了“开闭原则”;在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护



单例模式

特点:一个类只产生一个实例。

为了解决如下需求:

l  性能需求:减少频繁实例创建销毁带来的消耗;

l  功能需求:多用户同时使用时,便于统一控制。

注意点:

   避免产生多重实例,是需要有synchronized的修饰符。

举例:



适配器模式

特点:把某个对象已经实现方法,包装成另外一种对象/接口。以供调用者使用。

分类:类的适配器模式、对象的适配器模式。



l  不建议用的类的适配器模式,违反Liskov替换原则(子类不能比父类更严格);

最好用对象适配器模式,构造函数中中包含接口,所有方法对接口方法做适配。

参考代码:







模板方法模式

定位:它是扩展功能的基本模式。定义一个操作中的算法骨架,而将一些实现步骤延迟到子类当中。

可以通过:继承、组合分别实现。

 

模板方法的形式:

l  抽象方法:





通过抽象类,强制子类实现;

l  具体方法:



l  钩子方法:



空的实现,子类根据需要实现。

 

举例:JavaServlet中用到两个设计模式,如下:

1)  GenericServlet 通过service()方法实现模板方法

2)  容器通过init()实现了模板方法。



策略模式

扩展功能的另一种模式。通过组合来实现扩展。

策略模式有三个角色:一个策略接口(抽象类)、策略实现、应用程序。

运行的是策略的实现。



组合模式

组合模式,是一种对象的结构模式,常用于:树形结构。

举例说明:

Test 接口

TestCase实现Test接口

TestSuite实现了Test,同时包含了Test、TestCase;直接runTest(),整个框架就会自动执行。



推荐书籍

仍然推荐:



思考帮助

架构师负责让架构合理,工程师依赖设计的框架、设计规范实现业务。

重点要理解不同模式设计背后的原理。



发布于: 2020 年 06 月 24 日 阅读数: 40
用户头像

还未添加个人签名 2018.08.21 加入

码过代码、做过产品;擅长码字、演讲、认真做事之人。

评论

发布
暂无评论
架构-面向对象的设计模式-总结