![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
wei.zheng
这个作者很懒,什么都没留下…
展开
-
23.结构型 - 桥接模式(Bridge)
1.定义将抽象部分与实现部分分离,使其可以独立的变化前提是当前类有两个独立变化的维度,且两个维度都需要进行扩展2.UML类图角色说明Abstraction : 抽象部分(维度一),持有实现部分(维度二)的引用RefinedAbstraction : 优化的实现部分(示例代码中LargeCoffee, SmallCoffee)Implementor : 实现部分 (示例中Abs...原创 2020-01-14 09:05:05 · 143 阅读 · 0 评论 -
22.结构型 - 外观模式 (Facade)
1.定义为复杂子系统提供高层次的统一接口,简化使用对外隐藏此系统的具体实现,隔离变化2.UML类图角色介绍Facade : 对外统一接口SystemA : 子系统接口SystemB : 子系统接口3.UML示例代码/** * Copyright (C), 2016-2020 * FileName: PhoneFacade * Author: wei.zheng ...原创 2020-01-09 09:40:03 · 119 阅读 · 0 评论 -
21.结构型 - 享元模式 (Flyweight)
1.定义对象池的一种实现,Flyweight,用来尽量减少内存多使用;适用于需要缓冲池多场景2.UML类图角色介绍IParamsFlyweight :享元对象抽象接口ConcteParamsFlyweight : 享元对象具体实现ParamsFlyweightFactory : 享元对象工厂类,主要负责对象池的管理要点对象池工厂类管理抽象接口( 依赖倒置原则 )3.U...原创 2020-01-08 09:34:16 · 91 阅读 · 0 评论 -
20.结构型 - 装饰模式 (Decorator)
1.定义动态的扩展对象功能(继承关系的替代方案之一)2.UML类图3.UML示例代码/** * Copyright (C), 2016-2020 * FileName: AbstractComponent * Author: wei.zheng * Date: 2020/1/6 9:19 * Description: 抽象组件类 */public abstract cl...原创 2020-01-07 08:56:34 · 89 阅读 · 0 评论 -
19.结构型 - 适配器模式 (Adapter)
1.定义将一个类的接口转换为客户期待的接口(通过Adapter达到兼容接口的目的)2.UML类图角色介绍IAccessSDCardTarget : Target角色,定义了目标接口TFCardAdaptee : Adaptee角色,需要适配的角色,将其接口适配为Target定义的接口AccessAdapter : Adapter角色,这里为对象适配器角色,Adapter通过代理...原创 2020-01-04 10:41:13 · 91 阅读 · 0 评论 -
18.结构型 - 组合模式 (Composite)
1.定义用树状结构来组合对象,表示整体-部分的层次结构提供统一的方法来访问对象,忽略对象与对象集合之间的差别2.UML类图角色介绍AbstractComponent : 抽象根节点,定义统一的访问接口Leaf : 具体叶子节点Composite : 具体枝干节点要点涉及到递归访问3.UML示例代码/** * Copyright (C), 2016-2020 *...原创 2020-01-03 19:07:42 · 113 阅读 · 0 评论 -
17.结构型 - 代理模式 (Proxy)
1.定义通过代理对象来间接访问真实对象,简化用户端的代码逻辑2.UML类图角色介绍ISubject : 主题抽象接口RealSubject : 真实主题类ProxySubject : 代理主题类要点说明静态代理方式,真实主题与代理主题需要实现同一接口,并且代理主题持有真实主题引用3.UML示例代码/** * Copyright (C), 2016-2020 * F...原创 2019-12-31 22:04:55 · 139 阅读 · 0 评论 -
16.行为型 - 中介者模式 (Mediator)
1.定义2.UML类图3.UML示例代码/** * Copyright (C), 2015-2019 * FileName: AbstractMediator * Author: wei.zheng * Date: 2019/10/25 22:17 * Description: 抽象中介者, 持有具体同事的引用 */public abstract class Abstract...原创 2019-12-25 09:13:02 · 127 阅读 · 0 评论 -
15.行为型 - 访问者模式 (Visitor)
1.定义目的是方便访问某种数据结构中的各个元素,在不改变此数据结构的前提下定义作用于这些元素的新的操作2.UML类图角色介绍AbstractVisitor : 抽象访问者,定义对每一个Element的访问行为ConcreteVisitor : 具体访问者, 实现具体访问行为AbstractElement : 抽象元素类,定义接受AbstractVisitor访问的方法Conc...原创 2019-12-21 20:25:38 · 192 阅读 · 0 评论 -
14.行为型 - 模板方法模式 (Template)
1.定义定义一个抽象算法流程,将具体实现延迟到子类应该很广泛,比如生命周期方法、Android中异步任务AsyncTask等2.UML类图角色介绍AbstrateTemplate : 模板抽象类,定义一套流程ConcreteA : 具体实现类ConcreteB : 具体实现类要点流程方法execute()通常用final关键字修饰,表示不可重新定义3.UML示例代码...原创 2019-12-18 21:36:20 · 81 阅读 · 0 评论 -
13.行为型 - 迭代器模式 (Iterator)
1.定义提供一种顺序访问(遍历)容器中各个元素的方法高频使用的设计模式,但是很少需要单独实现,容器类几乎都已经封装好2.UML类图角色介绍IIterator : 抽象迭代器接口ConcreteIterator : 具体迭代器,实现遍历容器的方法IAggregate : 抽象容器接口,提供创建具体迭代器接口ConcreteAggregate : 具体容器要点容器接口中需要...原创 2019-12-17 22:30:21 · 88 阅读 · 0 评论 -
12.行为型 - 备忘录模式 (Memento)
1.定义说明行为模式,用于保存对象的内部状态(备忘录角色),以便可以再恢复到当前状态2.UML类图角色说明Originator : 负责创建一个备忘录Memoto : 备忘录角色,记录需要记录的具体属性参数CareTaker : 只负责存储备忘录,不对Memoto的内容进行操作和访问要点说明Memoto备忘录角色只是一个对象的内部状态的快照3.示例代码GameOri...原创 2019-12-01 21:30:33 · 108 阅读 · 0 评论 -
11.行为型 - 观察者模式 (Observer)
1.定义2.UML类图3.UML示例代码/** * Copyright (C), 2016-2020 * FileName: IObserver * Author: wei.zheng * Date: 2019/12/16 9:22 * Description: 抽象观察者接口 */public interface IObserver { void update(St...原创 2019-12-16 21:38:01 · 97 阅读 · 0 评论 -
10.行为型 - 命令模式 (Command)
1.定义将请求封装为一个对象(Invoker),命令(Command)作为请求对象的参数增加类的复杂度来达到解耦调用关系的目的2.UML类图角色介绍Receiver : 接收者角色,执行请求的具体逻辑都在此类中ICommand : 抽象命令接口ConcreteCommand : 具体命令角色,内部持有Receiver引用,调用Receiver的方法实现功能Invoker :...原创 2019-12-15 21:00:13 · 88 阅读 · 0 评论 -
8.行为型 - 责任链模式 (Chain of Responsibility)
1.定义将多个对象连成一条“链”,请求沿着这条链传递,直到有对象处理该请求请求由哪个对象处理,是在运行时动态决定2.UML类图角色说明AbstractHandler : 抽象处理者,声明请求处理的方法,并且持有下一个处理对象的引用ConcreteHandlerA : 具体处理者A,处理请求,若不能则将请求传递给下一节点ConcreteHandlerB : 具体处理者B...原创 2019-12-12 09:05:28 · 90 阅读 · 0 评论 -
7.行为型 - 状态模式 (State)
1.定义不同的状态抽象为不同的对象将对象的行为包装在不同的状态对象中2.适用场景当对象的行为与状态有关时,此模式可以避免过多的分支判断语句。状态模式实质上将每一个条件分支放到一个独立的类中,每一个对象不依赖其他对象而独立变化,通过多态来达到去除if-else分支判断语句。3.UML类图角色说明IState: 状态抽象接口, 定义一组接口,表示改状态下的行为Concrete...原创 2019-12-07 22:22:28 · 195 阅读 · 0 评论 -
6.行为型 - 策略模式 (Stragety)
1.定义定义一些列的算法,每一个都封装起来,并且可以互相替换外层使用者无需感知算法的变化2.UML类图角色说明:IStrategy : 策略的抽象接口BusStrategy / CarStrategy : 具体策略类CalculatorContext : 用来操作策略的上下文环境3.UML实例代码/** * Copyright (C), 2016-2020 * Fi...原创 2019-12-05 22:26:54 · 314 阅读 · 0 评论 -
5.创建型 - 抽象工厂模式 (Abstract Factory)
1.定义说明抽象工厂,顾名思义生产的产品是不确定的为创建一组对象提供一个接口,而不需要指定它们的具体类2.UML类图角色介绍AbstractFactory : 抽象工厂ConcreteFactory1 : 具体工厂1ConcreteFactory2 : 具体工厂2AbstractProductA : 抽象产品AAbstractProductB : 抽象产品B要点抽象/...原创 2019-12-05 22:08:24 · 133 阅读 · 0 评论 -
4.创建型 - 工厂方法模式 (Factory)
1.定义说明2.UML类图3.UML示例代码原创 2019-12-01 20:53:54 · 81 阅读 · 0 评论 -
3.创建型 - 原型模型 (Prototype)
1.定义说明定义说明原型,顾名思义是一个模板通过拷贝原型来创建新的对象使用场景类初始化消耗资源太多时,可以用原型模型当new操作成本较高时,clone方法可以带来效率提升2.UML类图角色介绍:Client:用户类IProtoType:接口or抽象类,原型模板,具备clone能力ConcreteProtoType:具体原型类要点clone方法是Object类的方法...原创 2019-11-25 23:03:56 · 190 阅读 · 0 评论 -
2.创建型 - Builder模式 (Builder)
1.Builder模式定义说明创建复杂对象,可以精细化的控制对象的构造流程;解耦,将构建过程与组件分离。2.UML类图角色介绍AbstractProduct:抽象产品类,需要构建的目标AbstractBuilder:抽象Builder,规范产品的组件ConcreteBuilder:具体BuilderDirecgor:统一构建过程要点在具体的Builder中创建P...原创 2019-11-22 22:09:48 · 146 阅读 · 0 评论 -
1.创建型 - 单例模式 (Singleton)
1.单例模式定义说明创建型设计模式确保某个类只有一个实例适用场景系统内只需要一个全局对象,减少对象创建带来的资源消耗2.UML类图角色介绍Singleton: 单例类Client: 客户类(适用者)要点私有构造方法公有静态方法返回实例对象3.几种单例模式比较常见4种单例模式:饿汉、懒汉、双重检查锁DCL、静态内部类方式饿汉public ...原创 2019-11-19 22:10:02 · 125 阅读 · 0 评论 -
0.(下)UML类图常用符号
1.继承/泛化 Generalization表达父类与子类的概念2.实现 Realization表示具体类实现抽象接口3.关联 DirectedAssociation类与类之间的一种对应关系,可以是单向的,也可以是双向的4.聚合 Aggregation关联关系的一种,表示整体与部分的关系,强调has-a(表达一种弱拥有的关系)说明:学校与学生为聚合关系,学生聚...原创 2020-01-04 17:07:33 · 206 阅读 · 0 评论 -
0.(上)面向对象的6大原则
1.常说的SOLID原则是指什么?1/ S - Single Responsibility Principle 单一职责原则一个类,只有一个引起其变化的原因。说的是指导原则,一个类的功能应该单一2/ O - Open Close Principle 开闭原则对扩展开放、对修改封闭说的也是基础设计原则,需求变化时,尽量通过扩展的方式实现变化,而不是修改原有代码3/ L - Li...原创 2019-11-22 22:49:00 · 92 阅读 · 0 评论