
设计模式
飞、
这个作者很懒,什么都没留下…
展开
-
八、单例模式
设计模式之单例今天来谈谈单例模式。单例模式是使用最广泛的,也“可能”是最简单的设计模式之一。这里我的“可能”打了引号,意在提醒大家,单例模式虽然代码不多,但是蕴含的理论其实并不少。首先,单例模式的出现,我个人理解是OOP思想对static变量的面向对象实现。大家知道,如果想要表示一个全局唯一的变量,不随对象的不同而出现新的拷贝,一般语言中都有static关键字。当一个变量被static修饰时,则表示该变量是所有该类的对象共享的。但是,如果我们有很多变量有类似的需求,难道要每个变量都用static修饰吗?原创 2020-07-18 22:35:26 · 103 阅读 · 0 评论 -
七、状态模式
今天学习状态模式,状态模式解决的是物体对象状态发生变化,随之导致某些操作也不同的场景,其和策略模式的实现方式非常类似。它将对象的一系列状态及该状态下的操作进行了抽象。比如:文件的打开状态发生变化时,能够进行的操作也是不一样的;玩家的级别不同,游戏给玩家的游戏策略也会发生些许不同。因此,状态模式适用于状态会变化,同时行为会跟着变化的场景。其与策略模式的不同就在于,策略模式是一次性选择,然后决定行为,而状态模式是随状态而不断变化行为。class State {public:virtual void原创 2020-07-18 22:34:43 · 94 阅读 · 0 评论 -
六、装饰器模式
装饰器(防止子类急剧膨胀)装饰器模式是利用类组合,而非类继承实现代码复用。(8大设计原则之一:优先类组合而非类继承)装饰器模式最主要的特征:对接口类Component既是is a(继承),又是has a关系(包含引用)。(看到这种情况,99%是装饰器模式)Decorator模式主要是实现类横向功能的扩展,包含接口的引用实现多态(相当于包含了所有接口具体实现类的引用),而继承接口又使得其可...原创 2020-05-05 21:48:46 · 185 阅读 · 0 评论 -
五、桥接模式
桥接模式:防止子类急剧膨胀(即会发生多层次继承的时候)。定义接口时,如果物体在两个及以上的维度具有强烈的变化倾向,则应该拆分成两个接口。通过在一个接口(abstractComponent)中含有另一个接口(abstractComponentImp)的引用实现“桥接”。对应于不同变化维度可以派生出具体的子类而不会相互干扰。思考:Bridge模式与装饰器模式、适配器模式形式上有相似。...原创 2020-05-05 21:38:09 · 171 阅读 · 0 评论 -
四、模板方法模式
模板方法:对一系列流程、生命周期等的抽象,通过将早绑定转换为晚绑定,实现稳定。站在类库开发者的角度,“不要调用我,让我来调用你”。即类开发者先调用抽象的方法,具体的实现调用者负责,而不是由调用者去选择性调用开发者写好的方法,调用者只管实现方法即可,无需关注流程。UI窗体的生命周期,线程的生命周期等,流程是固定的,但是在各个生命周期的方法不一定,作为虚函数留给应用程序具体实现。实现思路:...原创 2020-05-05 21:15:34 · 131 阅读 · 0 评论 -
三、策略模式
策略模式strategy模式提供了条件判断语句外的另一种选择,一般含有条件判断语句的代码,如果不是像一周七天这种不会变化的选择项,一般都可以用策略模式重构。strategy模式通过多态实现一系列的可以变化的算法,在运行时决定调用的具体算法在下面的例子中,本来可能需要写两个类或者两个字符串,if(shapetriangle){}else if(shaperectangle){}或者...原创 2020-05-05 20:40:24 · 188 阅读 · 0 评论 -
二、观察者模式
二、观察者模式观察者模式:常用于事件监听等,一般UI框架中经常会使用。观察者Observer:订阅者发来通知时,所有的观察者都需要更新自己update()方法(回调方法)。观察者通常通过addListner进行注册监听。订阅者Subject : 可以理解为观察者的观察目标。订阅者通常通过sendMessage进行消息通知。观察者是一个抽象类,定义一个抽象的update()方法,当收...原创 2020-05-05 20:15:44 · 147 阅读 · 0 评论 -
一、设计模式的原则
设计模式的原则(一)针对一个复杂问题,一般有两种解决方法:1·、分解(使用if else分别处理),针对多种情况分别讨论(switch case)。2、抽象(使用多态统一处理),通过面向对象多态特性,不同的情况使用同一的接口处理。设计原则:1、依赖倒置原则:高层(稳定)不应依赖于低层(变化),而应该依赖于抽象(某个主类不应依赖于细分类)。2、单一职责原则:类的职责应该单一,否则应该进行...原创 2020-05-05 19:53:47 · 143 阅读 · 0 评论