拥有设计模式标签的文章

设计模式历险记之外观模式

外观模式:为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口 ,这个接口使得这一子系统更加容易使用。 先来看看它的结构图吧:从上面的结构图我们可以读出,外观类给子系统提供了一系列额接口,供外部客户端调用。从而实现外部客户端和子系统解耦。 举一个小栗子吧:现在有这样一种场景,
阅读全文

设计模式历险记之适配器模式

适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。Apapter 模式使原本不兼容而不能一起工作的那些类可以一起工作。 我们先来看看它的结构图:从上面结构图可知,一个客户端类需要请求目标类或者是目标抽象,存在一个适配器继承了目标了或者是实现了目标抽象,并且将客户端的请求转移到了被适配的对象。 举一个栗子吧:现在有这样一种场景:
阅读全文

设计模式历险记之状态模式

状态模式: 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 我们先来看看它的结构图:通过结构图可以知道,状态模式存在一个维护当前状态实体的上下文类,它和状态类是一种聚合关系。然后有一个状态抽象类以及对应具体的状态实体。 接下来举一个小小的栗子吧。现在有一个场景是你在做一个电商网站的订单流程。都知道,订单从下单到完成中间会有很多的...
阅读全文

设计模式历险记之策略模式

策略模式:它定义了算法家族,分别封装起来,让他们之间可以相互替换,此模式让算法的变化,不会影响到使用算法的客户。 我们先看看它的结构图:从结构图我们大致知道策略模式有一个应用策略的上下文类,该类主要是用来选择用哪一个策略类。它的右边是策略抽象类,它和策略抽象类之间是聚合关系。抽象策略类下面有不同继承它的具体策略类。 举一个栗子:某超市现在需要做一款收银软件,...
阅读全文

设计模式历险记之享元模式

享元模式:运用共享技术有效的支持大量细粒度的对象。 我们先来看看它的结构图:从上面的结构图我们可以知道,享元模式是由享元工厂、享元抽象(不是必须的)、享元实体和不需要享元的实体所组成(不是必须的),这里面这个享元工厂是这个设计模式的核心,它主要是负责来共享需要共享的享元实体的。 例子:假设我们现在正在开发一款中国象棋的游戏,我们现在需要初始化每个象棋,都知道...
阅读全文

设计模式历险记之单例模式

单例模式:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 我们先来看看它的结构图:这个结构图比前几次介绍的结构图简单多了,它只有一个单例类。该类有一个私有的静态属性,是存放改类的实例的;它的构造方法是私有的,所以不能在类的外部去实例化它;它有一个公共的静态方法,是用来获取单例类仅有的这个实例的。 应用场景:
阅读全文

设计模式历险记之原型模式

原型模式:原型模式又叫做克隆模式,它是用原型实例来制定创建对象的种类,并且通过拷贝这些原型创建新的对象。 我们先来看看它的结构图:从上面的结构图可以知道,原型模式由一个客户端类,原型抽象类和原型实体类组成。客户端类关联原型类,在客户端中来生产生产克隆原型对象。原型基类定义了一个 Clone 方法,然后每个实体类实现这个 Clone方法。 应用场景:现在假如我们正...
阅读全文

设计模式历险记之装饰模式

装饰模式,动态地给一个对象添加一些额外地职责,就增加功能来说,装饰模式比生成子类更为灵活。 我们先来看看它的结构图:Component 抽象接口提供了一个装饰模板,并且规定了一个装饰方法,ConcreteComponent 和 Decorator 都实现了这个接口, ConcreteComponent 是被装饰的对象,它本身能实现一些功能,并且它不知道任何的装饰器,也能被装...
阅读全文

设计模式历险记之观察者模式

观察者模式也叫做发布订阅模式,在具体分析它之前我们先来看看书本上给出的定义。定义:定义了一种一对多的依赖关系,让多个观察者对象监听某个主题对象。这个主题对象状态发生变化时,会通知所有观察者对象,使他们能够自动跟新自己。 一.结构图: 二.举个栗子:现在有这样一种场景:在一个电商平台,里面分了卖家,买家,平台方,客服人员。如果买家对某一件商品下单并付款成功,需要通知对...
阅读全文

工厂模式三姐妹之抽象工厂模式

抽象工厂模式的定义:提供一个创建一系列相关或依赖的对象的接口,而无须指定他们具体的类。 结构图: 例子: 场景:你开发了一个软件,这个软件你数据库是用的SqlServer,你把这个软件卖出了,但是卖家叫你将数据库改为免费的 Mysql,如果你没有用设计模式或者你将所有和数据库相关代码写死再业务代码中,想想那是多么伤脑筋的一件事情,如果你用了抽象工厂模式,那么又将...
阅读全文
  • 本博客使用免费开源的 laravel-bjyblog v5.5.1.3 -develop 搭建 © 2014-2018 www.snail-c.cn 版权所有 ICP证:蜀ICP备18023253号-1
  • 联系邮箱:459921737@qq.com