10、设计模式

一、单例设计模式

懒汉(线程安全问题)同步锁,每次判断锁,效率低,外层再加一个判断是否为空,效率高

1、私有化构造方法

2、声明引用类型变量,不要创建对象

3、声明静态方法获取本类对象,判断是否已经创建了本类的对象,如果已经创建了直接返回,没有则创建引用类型变量返回

二、装饰者设计模式

增强一个类的功能,还可以让这些类互相装饰

通过继承增强一个类的功能:

优点:代码结构清晰易懂

缺点:使用不灵活,会导致继承的体系过于庞大

步骤:

1、在装饰类内部维护一个被装饰类的引用

2、让装饰类有共同的父类或者父接口

父类有无参的构造方法时默认调用,要是没有无参的构造方法则需要指定有参构造方法

修饰模式实战增强类:

优点:内部可以通过多态对多个需要增强的类进行增强,让这些修饰类达到互相装饰的效果,使用灵活

缺点:需要内部通过多态维护需要被增强类的实力,使代码复杂

三、观察者设计模式

当一个对象发生指定动作时,通知另外一个对象做出相应的处理

发布 - 订阅、模型 -视图、源-收听者、从属者

将观察者和被观察的对象分离开、一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。

通常被用来实作事件处理系统,Swing大量使用观察者模式,许多 GUI框架也是如此

int random = new Random().nextInt(1000);  // 产生范围内的随机数

步骤:

1、当目前对象发生指定动作时,要通知另外的对象做相应的处理,把对方的相应处理方法定义在接口上

2、在当前对象中维护接口的引用,当当前对象发生指定动作时即可调用指定的方法

四、工厂设计模式

用于生产对象

该模式将创建对象的过程放在了一个静态方法中来实现 . 在实际编程中 ,如果需要大量的创建对象 , 该模式是比较理想的 .

可以用反射产生任意类型的对象

时间: 2024-11-12 14:00:14

10、设计模式的相关文章

10.设计模式_组合模式

转载自   http://www.cnblogs.com/zhili/p/CompositePattern.html 一.引言 在软件开发过程中,我们经常会遇到处理简单对象和复合对象的情况,例如对操作系统中目录的处理就是这样的一个例子,因为目录可以包括单独的文件,也可以包括文件夹,文件夹又是由文件组成的,由于简单对象和复合对象在功能上区别,导致在操作过程中必须区分简单对象和复合对象,这样就会导致客户调用带来不必要的麻烦,然而作为客户,它们希望能够始终一致地对待简单对象和复合对象.然而组合模式就是

10设计模式六大原则——迪米特法则

设计模式六大原则(5):迪米特法则 定义:一个对象应该对其他对象保持最少的了解. 问题由来:类与类之间的关系越密切,耦合度越大,当一个类发生改变时,对另一个类的影响也越大. 解决方案:尽量降低类与类之间的耦合. 自从我们接触编程开始,就知道了软件编程的总的原则:低耦合,高内聚.无论是面向过程编程还是面向对象编程,只有使各个模块之间的耦合尽量的低,才能提高代码的复用率.低耦合的优点不言而喻,但是怎么样编程才能做到低耦合呢?那正是迪米特法则要去完成的. 迪米特法则又叫最少知道原则,最早是在1987年

Chapter 10. 设计模式--工厂模式

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication9 { /*设计模式:工厂模式 */ //父类:NoteBook public abstract class NoteBook { public abstract void SayHello(); } //子类: public class ASUS : NoteBook

设计模式学习笔记(目录篇)

设计模式学习笔记(目录篇) 为了方便查看,特此将设计模式学习笔记系列单独做一个目录. 1   设计模式学习笔记(一:命令模式) 2   设计模式学习笔记(二:观察者模式) 3   设计模式学习笔记(三:装饰模式) 4   设计模式学习笔记(四:策略模式) 5   设计模式学习笔记(五:适配器模式) 6   设计模式学习笔记(六:责任链模式) 7   设计模式学习笔记(七:外观模式) 8   设计模式学习笔记(八:迭代器模式) 9   设计模式学习笔记(九:中介者模式) 10  设计模式学习笔记(

设计模式 - 模板方法模式(template method pattern) 排序(sort) 详解

模板方法模式(template method pattern) 排序(sort) 详解 本文地址: http://blog.csdn.net/caroline_wendy 参考模板方法模式(template method pattern): http://blog.csdn.net/caroline_wendy/article/details/32159455 模板方法模式的一个主要的应用是排序(sort)算法. 对象的排列方式并不是完全相同, 所以需要排序(sort)算法compareTo()

设计模式学习--list

简单: Abstract Factory (3.1) Adapter (4.1) Composite (4.3) Decorator (4.4) Factory Method (3.3) Observer (5.7) Strategy (5.9) Template Method (5.10) 设计模式编目: Abstract Factory (3.1):提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类. Adapter (4.1): 将一个类的接口转换成客户希望的另外一个接口.

java 常用十种设计模式示例归纳 | 已打包请带走

设计模式(Design pattern)是一套被反复使用.多数人知晓的.经过分类编目的.代码设计经验的总结. GitHub地址DesignPattern 文章说明一个Demo,集合常用的十种设计模式,每个模式使用易被人们接受的案例讲述,按模式分包,使用设计模式前后对比,界面显示定义讲解,让你更深刻的了解每种设计模式.大部分案例来自张鸿洋的博客.如有错误欢迎指正,如有侵权,请联系我删除. 项目结构 包结构.png设计模式分为三种类型,共23种:创建型模式:单例模式.抽象工厂模式.建造者模式.工厂模

框架设计总结

框架设计总结 温昱老师的<一线架构师实现指南>读完好几天了,本书很多大牛都有推荐,自己从头到底一字不漏的看了,很多关键的方法,做了标记,看了多次,是一本介绍构架设计方面很好的书,准备把它做为工具书,在开始中用好其中的方法. 大学学的软件工程,软件设计要从需求分析.可行性分析.概要设计.软件设计.软件开发和测试,说的是一个大的过程,具体到针对一个项目时还是会感觉无从下手:本书提供的ADMEMS方法体系,把这一过程形成方法体系,让框架设计的操作性更强,四个核心主张: 1)       方法体系是大

[100天计划][1/15][1/30]开篇清单

工作3年, 结果不如意. 今天, 开始执行100计划, 为了更好的工作, 更好的发展, 远处的女神. 改变, 改变, 改变. 清单如下: 时间段: 2015/6/1 –2015/9/8, 共15周. 内容(目标): 1, 健身运动. 指标: 1周3次. 共45次. 2, 工作技能: a) 一门新语言Python. b) Excel,PPT案例练习. c) 设计模式学习. d) C#读书巩固进步学习. 1) 健身(包括慢跑)1周3次. 共15 *3次. 已经坚持一年,除中途有部分周中断,一直坚持,

高级抽象

多年前留下来的,但不记得从哪位大神的blog里拷贝下来的,暂记于此. 1.认识到本质,才能让你的程序具备更大的灵活性和扩展性.在软件开发中,抽象能力体现为对问题域的理解能力,对领域模型的抽象.合理的抽象也是代码重构的前提,每一次重构,都是向更好的抽象迈进了一步.这是一个优秀高级程序员所应该具备的能力. 2.提高抽象思维的能力就是提高抽取不同事物的共性的能力,不同的事物不仅仅是包括现实中具体的事物.引入到编程语言里:抽象类是一类事物的高度聚合,而接口是定义行为规范.聚合(抽象abstract)<-