设计模式
OliverNeko
理想是最真实的现实。
展开
-
[设计模式笔记] 观察者模式(Observer Pattern)
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一主题对象。这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。 一个软件系统常常要求在某一个对象的状态发生变化的时候,某些其它的对象做出相应的改变。做到这一点的设计方案有很多,但是为了使系统能够易于复用,应该选择低耦合度的设计方案。 减少对象之间的耦合有利于系统的复用,但是同时设计师需要使这些低...原创 2020-04-23 11:59:34 · 183 阅读 · 0 评论 -
[设计模式笔记] 建造者模式(Builder Pattern)
将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。对象性质的建造:有些情况下,**一个对象会有一些重要的性质,在它们没有恰当的值之前,对象不能作为一个完整的产品使用。**比如,一个电子邮件有发件人地址、收件人地址、主题、内容、附录等部分,而在最起码的收件人地址未被赋值之前,这个电子邮件不能发出。有些情况下,一个对象的一些性质必须按照某个顺序赋值才有意义。在某个性质没...原创 2020-04-17 21:35:18 · 180 阅读 · 0 评论 -
[设计模式笔记] 外观模式(Facade Pattern)
外部与一个子系统的通信必须通过一个统一的外观(Facade)对象进行。外观模式要求一个子系统的外部与其内部的通信必须通过一个统一的外观对象进行。外观模式提供一个高层次的接口,使得子系统更易于使用。外观模式的外观类将客户端与子系统的内部复杂性分隔开,使得客户端只需要与外观对象打交道,而不需要与子系统内部的很多对象打交道。结构:外观(Facade)角色:客户端可以调用这个角色的方法。此角色知...原创 2020-04-16 15:53:18 · 255 阅读 · 0 评论 -
[设计模式笔记] 模板方法模式(Template Method Pattern)
模板方法模式实际上时所有模式中最为常见的几个模式。定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法模式需要开发抽象类和具体子类的设计师之间的协作。一个设计师负责给出一个算法的轮廓和骨架另一些设计师则负责给出这个算法的各个逻辑步骤代表这些具体逻辑步骤的方法称作基本方法(primitive metho...原创 2020-04-13 16:47:35 · 116 阅读 · 0 评论 -
[设计模式笔记] 原型模式(Prototype Pattern)
通过给出一个原型对象来指明所需要创建的对象类型,然后用复制这个原型对象的办法创建出更多的同类型对象。Java中可以使用定义在Object类中的clone方法,需要实现克隆的类只需要实现java.lang.Cloneable接口即可。C#中可以使用 Clone() 方法实现原型模式。任何类,只要想支持克隆,必须实现C#中的 ICloneable 接口,该接口中有一Clone方法,可以在类中复写,...原创 2020-04-13 16:46:38 · 237 阅读 · 0 评论 -
[设计模式笔记] 工厂方法模式(Factory Method Pattern)
工厂方法(FactoryMethod)模式是类的创建模式,其用意是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。在工厂方法模式中,核心的工厂类不在负责所有产品的创建,而是将具体创建工作交给子类去做。这个核心类仅仅负责给出具体工厂必须实现的接口,而不接触哪一个产品类被实例化这种细节。这使得工厂方法模式可以允许系统在不修改工厂角色的情况下引进新产品。在Factory Method模式...原创 2020-04-13 16:45:32 · 111 阅读 · 0 评论 -
[设计模式笔记] 代理模式(Proxy Pattern)
代理(Proxy)模式给某一个对象提供一个替身或占位符,以控制对这个对象的访问。所谓代理,就是一个人或者一个机构代表另一个人或者另一个机构采取行动。在一些情况下,一个客户不想或者不能够直接引用一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。应用:远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。可以隐藏一个对象存在于不同地址空间的事实。这个不同的...原创 2020-04-13 16:44:36 · 90 阅读 · 0 评论 -
[设计模式笔记] 装饰模式(Decorator Pattern)
装饰模式常常被成为包裹模式,就是因为每一个具体装饰类都将下一个具体装饰类或者具体构建类包裹起来。抽象构建(Component)角色:给出一个抽象接口,以规范准备接受附加责任的对象。具体构件(Concrete Component)角色:实现组件对象接口,通常就是被装饰器装饰的对象。装饰(Decorate)角色:持有一个构建(Component)对象的实例,并定义一个与抽象构件接口一致的接口。...原创 2020-04-13 16:43:17 · 206 阅读 · 0 评论 -
[设计模式笔记] 常见对象设计原则
一、单一职责原则(Single Reaponsibility Principle , SRP)就一个类而言,应该仅有一个引起它变化的原因(职责)。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责变化可能会削弱或者抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。难点在于如何区分职责、职责的粒度问题。软件设计真正要做的内容,就是...原创 2020-04-13 16:42:02 · 115 阅读 · 0 评论 -
[设计模式笔记] 策略模式(Strategy Pattern)
策略模式的用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。使用策略模式可以把行为和环境分割开来。环境类负责维持和查询行为类,各种算法则在具体策略类(ConcreteStrategy)中提供。由于算法和环境独立开来,算法的增减、修改都不会影响环境和客户端。当出翔新的促销折扣或现有的折扣政策出现变化时...原创 2020-04-13 16:40:47 · 149 阅读 · 0 评论 -
[设计模式笔记] 简单工厂模式(Simple Factory Pattern)
简单工厂模式根据提供给它的数据,返回几个可能类中的一个类的实例。通常它返回的类都有一个公共的父类和公共的方法。工厂类角色Creator ( LightSimpleFactory ) :工厂类在客户端的直接控制下(Create方法)创建产品对象。抽象产品角色Product(Light):定义简单工厂创建的对象的父类或它们共同拥有的接口。可以是一个类、抽象类或接口。具体产品角色Concrete...原创 2020-04-13 16:38:50 · 135 阅读 · 0 评论