Pre*_*raj 23
注意:使用现实生活和Java API示例添加简要定义.
你想如何创建对象?
原型:要复制或克隆的完全初始化的实例
示例:国际象棋游戏的初始状态
java.lang.Object#clone()构建器 - 将复杂对象的构造与其表示分开,以便相同的构造过程可以创建不同的表示
示例:厨房是工厂,厨师是建筑师,服务员告诉厨师"披萨配奶酪,洋葱".这里厨师暴露属性但隐藏实现.
单例 - 一类只能存在一个实例的
例子:一个国家的总统
Factory方法 - 创建多个派生类的实例.
示例:在组织中,HR用作工厂方法.这里开发团队要求HR需要资源类型.根据请求类型,HR为开发团队提供资源.
Abstract Factory - 创建几个类族的
实例示例:HP,Samsung和Dell笔记本电脑都使用Intel和AMD处理器.
这种设计模式都是关于类和对象的组合,即如何构建软件组件.
代理 - 表示另一个对象的对象
示例:支票簿,信用卡,借记卡是Money的代理,客户代表可以订购产品.
Composite - 为叶子和复合提供统一的接口.
示例:操作系统中的文件系统,目录是复合的,文件是离开的.系统调用Open是复合和叶子的单一接口.
装饰器 - 为叶子提供附加功能,同时提供统一的界面.
示例:1)在订单上添加折扣2)枪本身就是一种致命的武器.但是你可以应用某些"装饰"来使它更准确,更安静和更具破坏性.
Facade - 使用单一界面简化多个复杂组件
示例:控制面板
适配器 - 为接口提供不同的接口.
示例:电源适配器
Flyweight - 用于高效共享的细粒度实例
示例:拨号音
这种设计模式都是关于类的对象通信,即你想如何在软件中进行行为?
责任链 - 在一系列对象之间传递请求的方法
示例:贷款或离开审批流程
迭代器 - 按顺序访问集合的元素
示例:电视上的下一个/上一个按钮
状态 - 在状态更改时更改对象的行为
示例:扇形墙控件
观察者 - 通知更改多个类的方法
示例:出价或拍卖
访问者 - 无需更改即可为类定义新操作
示例:Taxi
模板 - 将算法的确切步骤推迟到子类
示例:蓝色打印
命令 - 将命令请求封装为对象
示例:用餐者的"访客检查"是命令模式的示例.服务员或女服务员接受客户的订单或命令,并通过将其写入支票来封装该订单.然后该订单排队等待短期烹饪.请注意,每个服务员使用的"支票"垫不依赖于菜单,因此它们可以支持烹饪许多不同项目的命令.
Memento - 捕获并恢复对象的内部状态
示例:在Windows中保存状态并在Windows中保存/撤消/重做操作
中介 - 定义类之间的简化通信
示例:空中交通管制员(ATC)
策略 - 策略定义了一组可互换使用的算法.
示例:运输方式