![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
设计模式
经典设计模式
一只倔强的蜗牛
编码人生,深耕技术
展开
-
常见设计模式——单例模式
设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用。 拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。 1. 单例(Singleton) Intent 确保一个类只有一个实例,并提供该实例的全局访问点。 Class Diagram 使用一个私有构造函数、一个私有静态变量以及一个公有静态函数来实现。 私有构造函数保证了不能通过构造函数来创建对象实...原创 2019-03-21 20:17:31 · 118 阅读 · 0 评论 -
常见设计模式——三种工厂模式(简单工厂、工厂方法、抽象工厂)
1 、简单工厂(Simple Factory) Intent 在创建一个对象时不向客户暴露内部细节,并提供一个创建对象的通用接口。 Class Diagram 简单工厂把实例化的操作单独放到一个类中,这个类就成为简单工厂类,让简单工厂类来决定应该用哪个具体子类来实例化。 这样做能把客户类和具体子类的实现解耦,客户类不再需要知道有哪些子类以及应当实例化哪个子类。客户类往往有多个,如果不使用...原创 2019-03-21 20:40:31 · 454 阅读 · 0 评论 -
常见设计模式——观察者模式
Intent 定义对象之间的一对多依赖,当一个对象状态改变时,它的所有依赖都会收到通知并且自动更新状态。 主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 Class Diagram 主题(Subject)具有注册和移除观察者、并通知所有观察者的功能,主题是通过维护一张观察者列表来实现这些操作的。 观察者(Observer)的注册功能需要调用...原创 2019-03-21 21:21:45 · 135 阅读 · 0 评论 -
常见设计模式——策略模式
Intent 定义一系列算法,封装每个算法,并使它们可以互换。 策略模式可以让算法独立于使用它的客户端。 Class Diagram Strategy 接口定义了一个算法族,它们都实现了 behavior() 方法。 Context 是使用到该算法族的类,其中的 doSomething() 方法会调用 behavior(),setStrategy(Strategy) 方法可以动态地改变 ...原创 2019-03-21 21:28:56 · 132 阅读 · 0 评论 -
常见设计模式——装饰模式
Intent 为对象动态添加功能。 Class Diagram 装饰者(Decorator)和具体组件(ConcreteComponent)都继承自组件(Component),具体组件的方法实现不需要依赖于其它对象,而装饰者组合了一个组件,这样它可以装饰其它装饰者或者具体组件。所谓装饰,就是把这个装饰者套在被装饰者之上,从而动态扩展被装饰者的功能。装饰者的方法有一部分是自己的,这属于它的功能...原创 2019-03-22 09:19:44 · 141 阅读 · 0 评论 -
常见设计模式——代理模式
Intent 控制对其它对象的访问。 Class Diagram 抽象角色:声明真实对象和代理对象的共同接口,这样在任何使用真实对象的地方都可以使用代理对象。 代理角色:代理对象内部含有真实对象的引用,从而可以在任何时候操作真实对象。代理对象和真实对象具有相同的接口,这样就可以在任何时候替代真实对象。代理对象通常在执行真实对象的操作前后,附加某些其他的操作,相当于对真实对象进行封装。 真...原创 2019-03-22 10:20:23 · 160 阅读 · 0 评论 -
常见设计模式——模板方法
Intent 定义算法框架,并将一些步骤的实现延迟到子类。 通过模板方法,子类可以重新定义算法的某些步骤,而不用改变算法的结构。 Class Diagram Implementation 冲咖啡和冲茶都有类似的流程,但是某些步骤会有点不一样,要求复用那些相同步骤的代码。 public abstract class CaffeineBeverage { fina...原创 2019-03-22 10:28:34 · 136 阅读 · 0 评论