随笔分类 - 设计模式学习记录
摘要:概念: 在软件中,对于功能的扩展,我们会有时候会使用继承来实现对象扩展功能。但是由于继承为类型引入的静态特质,所以缺乏灵活性并且随着功能的增多子类会膨胀。我们如何避免这种情况呢?可以用到装饰者模式。定义:动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。 装饰者模式采用组合,非继承的方式,解决主体类在多个方向上的扩展功能。实现了在运行时动态的扩展对象的功能,根据需要扩展多个功能,避免了单独使用继承带来的"灵活性差"和"多子类衍生的问题",但是它并非是解决多子类衍生的继承问题。场景:比如手机可以有很多功能,有通话功能,拍照功能
阅读全文
摘要:今天学习了《大话设计模式》中的策略者模式。定义:策略模式就是用来封装算法的。在实践中,我们用它来封装几乎任何类型的规则,只要在分析过程中听到任何时间有任何不同的应用规则,就可以考虑使用策略者模式处理这种变化的可能性。优点:1 定义了一系列可重用的算法和行为,其中用到的继承有助于取出这些算法中的公共功能; 2 简化了单元测试,每个类都是一个单独的算法,可以外接一个自己的接口进行测试。场景: 一个商场的收银系统,有时候是"正常收费",有时候"打八折",有"满300减20"......各种收银的可能性都有。于是在这里我们就可以用到"
阅读全文
摘要:下了本《大话设计模式》电子版在学习,据说也是cnblogs出身的,打算好好学习一下设计模式。今天上班趁着空闲阅读了"简单工厂模式"和"策略模式"。先记录一下"简单工厂模式"吧。简单工厂模式的实质就是由一个工厂类根据传入的参数,动态的决定应该创建那一个产品类的实例,这些产品都继承自一个父类或者接口。 以一个简单的计算器为例子,上代码。首先创建一个父类,其实也可以创建一个接口。1///<summary>2///简单工厂模式3///计算类4///成员:两个数,虚方法5///</summary>6publicclass
阅读全文
摘要:上次面试遇到这个问题,没回答到重点,看了些资料,现在记录下来。特点: 1 绕过常规的构造器,确保一个类只有一个实例,并提供一个全局访问点; 2 必须在自己的类中实例化,自己负责保存唯一实例,并且保证不会产生第二个实例; 3 类的构造函数改为private 或者protect; 3 安全的单件模式:双重检查锁定机制;场景描述:一个网站进行人数统计,通常会保存到内存,文件或者数据库中,每次用户登录,都new一个实例进行加一,然后保存起来。但是这样的话,有多个用户就会new多个对象,这样数据就不准确了,此时用"单件模式"可以解决。把计数器作为一个全局的对象,向所有人提供这一份数据
阅读全文

浙公网安备 33010602011771号