
设计模式
设计模式
IT_10-
我爱编程 编程爱我❤️
展开
-
设计模式---代理模式
代理模式 为对象提供一个替身,以控制对这个对象的访问,即通过代理对象访问目标对象,这样做的好处是可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。 被代理的对象可以是远程对象、创建开销大的对象或需要安全控制的对象 代理模式有不同的形式,主要有三种:静态代理、动态代理(又称JDK代理或接口代理)、Cglib代理(可以在内存中动态的创建对象,而不需要实现接口,它属于动态代理的范畴...原创 2020-02-14 09:53:05 · 182 阅读 · 0 评论 -
设计模式---策略模式
定义 在策略模式中,一个类的行为或其算法可以在运行时更改,这种类型的模式属于行为模式,即我们创建表示各种策略的对象和一个行为随着策略对象的改变而改变的context对象。 需求:假如一个服装店卖童装和青年装,需要根据不同的顾客类型展示不同的网页图片,那么不同的顾客类型就是不同的策略,在策略类中实现具体的算法,在执行策略的类中只管调用具体的实现算法的方法。 实例 通过一般的逻辑实现上述需求: c...原创 2019-09-25 21:35:11 · 144 阅读 · 0 评论 -
设计模式---观察者模式
定义 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。 观察者模式中,需要提供主题接口和观察者接口并实现主题类和观察者类 主题接口:提供注册依赖的对象以及通知依赖的对象的接口 观察者接口:提供观察者自身操作的接口 举例 假设一个购票流程,当购票成功后需要短信通知用户、本地文本日志记录功能,用一般的类实现如下: class BuyTick...原创 2019-09-25 21:34:45 · 161 阅读 · 0 评论 -
设计模式---外观模式
外观模式 外观模式也叫过程模式,外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一字系统更加容易使用 外观模式通过定义一个一致的接口,用以屏蔽内部子系统的细节,使得调用端只需要跟这个接口发生调用,而无需关心这个子系统的内部细节 外观模式的角色 外观类(Facade):为调用者提供统一的调用接口,外观类知道哪些子系统负责处理请求,从而将调用端的请求代理给...原创 2020-02-12 15:53:17 · 176 阅读 · 0 评论 -
设计模式---组合模式
假如我们有这样一个需求:需要展示一个学校想院系结构,一个学校下面有多个学院,一个学院下面有多个系: XX大学 计算机学院 计算机科学与技术 软件工程 网络工程 师范学院 中文系 外语系 传统的方案:系继承学院、学院继承学校。 但实际上系、学院、学校之间并非继承关系,而是组合关系(部分和整体的关系)。 组合模式简介 组合模式又称部分整体模式,它创建了对象组的树形结构,将对象组合成树形结构以...原创 2020-02-12 10:57:29 · 173 阅读 · 0 评论 -
设计模式---装饰器模式
定义 装饰器模式允许向一个现有的对象添加新的功能,同时又不改变其结构。可以动态地给一个对象添加一些额外的功能。 实例 /** * 输出一个字符串 * 装饰器动态添加功能 * Class EchoText */ class EchoText { protected $decorator = []; public function Index() { ...原创 2019-09-25 21:35:44 · 144 阅读 · 0 评论 -
设计模式---适配器模式
定义 适配器模式(有时候也称包装样式或者包装)将一个类的接口适配成用户所期待的。简单说就是将不同的接口通过封装成统一的API。 举例 (1)假设有一个玩具厂,生成狗、猫等动物,每个玩家可以进行“张嘴”、“闭嘴”操作,分别调用openMouth和closeMouth方法 于是我们这样实现: //定义玩具接口:张嘴和闭嘴 abstract class Toy { public abstract...原创 2019-09-23 21:47:25 · 152 阅读 · 0 评论 -
设计模式---建造者模式
建造者模式是将一个复杂的对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。创建者模式隐藏了复杂对象的创建过程,它把复杂对象的创建过程加以抽象,通过子类继承或者重载的方式,动态的创建具有复合属性的对象。 比如建造一个房子要分为打地基、砌墙、封顶过程,不同类型的房子都需要经历着三个过程,只是具体实现不同而已。一般方法实现如下。 传统模式 AbstractHouse抽象类封装了建造房子的过...原创 2020-02-08 08:36:34 · 380 阅读 · 0 评论 -
设计模式---原型模式
原型模式 原型模式(Prototype Pattern)是用于创建重复的对象,同时又能保证性能。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 当对象的初始化操作很耗费性能的时候,可以在该对象创建一次之后,后续该对象的实例使用它的克隆即可(克隆对象不会再执行构造函数)。 interface IPrototype { public function copy(); } ...原创 2019-09-25 21:35:26 · 181 阅读 · 0 评论 -
设计模式---工厂模式
描述 将调用者与创建者分离,调用者直接向工厂请求实例对象,工厂类根据参数来决定创建出哪一种类的实例。工厂类是一个类,包含了创建其他对象的方法。简单说就是想工厂类的创建对象的方法传入一个参数来得到需要的类。 优缺点 优点 扩展性高,如果想增加一个产品,只要扩展一个工厂类就可以 屏蔽产品的具体实现,调用者只关心产品的接口 类名修改了,只需要在工厂方法中修改就行了,不用到处找使用到该类的地方 缺点 ...原创 2019-09-23 22:41:53 · 169 阅读 · 0 评论 -
设计模式---单例模式
概念 单例就是指整个程序中该类的实例仅有一个,并且该类自己负责创建自己的实例并向整个系统提供这个实例。 单例模式用来保证一个类仅有一个实例并提供访问它的全局访问点。主要解决一个全局使用的类频繁地创建和销毁。用来控制实例数目,节省系统资源 单例模式定义规则 $_ instance必须声明为静态的私有变量 构造函数和析构函数必须声明为私有的,防止外部程序new类从而失去单例模式的意义 getInst...原创 2019-09-23 21:44:47 · 179 阅读 · 0 评论 -
设计模式的目的和七大原则
设计模式的目的和七大原则 设计模式是为了让程序(软件)具有更好的: 代码可重用性 可读性(程序规范性) 可扩展性(很方便的增加新功能) 可靠性(增加新功能后,对原功能不会产生不利影响) 使程序呈现高内聚、低耦合的特性 七大原则: 单一职责原则 接口隔离原则 依赖倒转原则 里氏替换原则 开闭原则 迪米特法原则 合成复用原则 单一职责原则 对类来说,即一个类应该只负责一项职责,如类A负责两个不...原创 2020-02-04 16:59:24 · 1006 阅读 · 0 评论