![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
设计模式
lubaixs
菜鸟也要先飞...
展开
-
策略模式
策略模式为了适应不同的需求,只把变化点封装了,这个变化点就是实现不同需求的算法,但是,用户需要知道各种算法的具体情况。就像上面的加班工资,不同的加班情况,有不同的算法。我们不能在程序中将计算工资的算法进行硬编码,而是能自由的变化的。这就是策略模式。 UML图: 使用场景: 1、许多相关的类仅仅是行为有异,“策略”提供了一种用多个行为中的一种来配置一个类的方法。原创 2015-07-30 21:29:24 · 364 阅读 · 0 评论 -
建造者模式
一个复杂对象的创建,其通常是由很多的子对象构成;如果一个对象能够直接就创建好了,那么也不会称之为复杂对象。由于项目中需求的变化,这个复杂对象的各个部分经常会发生剧烈的变化,但是,不管怎么变化,将它们组合在一起,组成一个复杂的对象的事实是不会变的。建造者模式就提供了一种“封装机制”来将各个对象的变化隔离开,最终,组合成复杂对象的过程是不会变的。 UML图: 优点:原创 2015-07-29 21:22:04 · 422 阅读 · 0 评论 -
简单工厂模式、工厂方法模式、抽象工厂模式
简单工厂模式并不是23中设计模式中的,但是在实际的应用中却经常使用。 UML图: 简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。 在这个模式中,工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这原创 2015-07-28 22:13:47 · 316 阅读 · 0 评论 -
命令模式
命令模式就是把一个请求或者操作封装到一个对象中,可提供撤销、重做等操作。在OOP中,一切都是对象,将请求封装成对象,符合OOP的设计思想,当将客户的单个请求封装成对象以后,我们就可以对这个请求存储更多的信息,使请求拥有更多的能力;命令模式同样能够把请求发送者和接收者解耦,使得命令发送者不用去关心请求将以何种方式被处理。 UML图: 优点: 1.命令模式原创 2015-08-04 21:24:30 · 300 阅读 · 0 评论 -
模板方法模式
定义一个操作中算法的骨架,而将一些步骤延迟到子类中。 模板方法使得子类可以不改变一个算法的结构即可重新定义该算法的某些特定步骤。 UML图: 优点:实现了代码复用; 缺点:算法骨架不易升级,模板与子类间耦合性高,修改模板,子类也会受到影响。 C++代码实现: //模板方法模式 #include #include using nam原创 2015-08-06 19:45:57 · 307 阅读 · 0 评论 -
单例模式
保证一个类只有一个实例,并提供一个访问它的全局访问点。首先,需要保证一个类只有一个实例;在类中,要构造一个实例,就必须调用类的构造函数,如此,为了防止在外部调用类的构造函数而构造实例,需要将构造函数的访问权限标记为protected或private;最后,需要提供要给全局访问点,就需要在类中定义一个static函数,返回在类内部唯一构造的实例。 意思很明白,使用UML类图表示如下:原创 2015-08-06 20:47:24 · 308 阅读 · 0 评论