设计模式

近日受一位资深程序员大牛写的一篇学习路线建议的博客影响,《大话设计模式》一书,同时参考“设计模式”一书。此篇博客为读《大话设计模式》的学习心得笔记...

简单工厂模式

简单工厂模式,运用了java继承的特点,在基类中定义方法作为父类方法,当出现多种情况,分别对这个方法有不同的
操作的时候。子类继承父类,然后重写方法,来实现符合自己的要求。当有新情况出现的时候。可以在不影响其他子类的
情况下,新增一个类,重写基类方法,来实现符合该需求的方法。
例如:一个计算类,有一个getResult方法,加减乘除,分别继承这个计算类,当有出现其他计算,入平方计算的时候,
只需要新增一个平方的类,重写getResult方法即可。

工厂模式

和简单工厂模式有点类似,运用了java继承的特点,重写方法来实现功能的实现。但是和简单工厂模式的区别为:简单工厂模式中如果功能所有变动,需要修改判断逻辑(违背了开放-封闭原则),因为简单工厂模式是通过动态来创建对象实例的。

工厂模式则是通过实例化确定工厂类的子类,然后调用方法来实现功能的。

策略模式

策略模式为用来封装算法的一种设计模式。

例如1:数组排序的算法非常多。有二分法,冒泡法等等。遵循单一职责原则,算法只做算法的真正实现,而不做算法的选择工作。将算法统一由一个策略抽象类来声明,然后由其各种子类来实现具体的算法。当环境类要调用时,通过实例化具体的子类,来选择所需要的算法。可将所需要的具体算法类(具体策略类类名)定义在config.xml配置文件中,通过取配置文件的类名+反射机制,来实例化具体策略实现类的实例来实现具体功能。

由环境类或客户端来决定具体使用哪种具体策略类。当需要新增新算法时,只需要新增具体策略类,实现抽象类的方法,并修改配置文件的具体策略类类名来实现功能即可。

单一职责原则:

就一个类而言,应该只有一个引起他变化的原因,类的职责单一,使其低耦合,才能够提高复用。

开放-封闭原则

可扩展。但不可更改。既增加新功能是通过增加新代码来实现的,而不是通过修改旧有的代码来实现。

一个项目,需求是在不断的变化的。开放封闭原则就是在需求变更时,可以通过扩展来实现新功能,但是不更改旧有的代码,这样大大的减小影响旧有功能的风险,并使程序不会越来越复杂。

装饰模式

动态给对象添加一些额外的职责(功能)

装饰类通过内置主体对象来实现,既可以实现主体对象的功能,有增加了自己独特的功能(自己的方法)

从功能上来看,和继承的特性是一样的(都是父类功能,加上自己的功能)。从灵活性来看,装饰模式更加灵活(每个装饰对象可以决定是否调用主体对象的功能(继承中父类的功能))

代理模式

为其他对象提供一种代理,以控制对这个对象的访问--GoF描述

通过实现接口或抽象类来完成职责的代理执行。

例如windows的桌面快捷键,通过代理,使用户点击快捷键就能启动应用。

例如一个很大的HTML页面,打开是却很快,因为里面的图片使用了代理,代理储存图片的路径和大小。等HTML页面打开后,才开始慢慢的加载图片(性能优化)--虚拟代理。

例如计算对象的引用次数,此时对象的大部分功能无需排上用场,使用代理模式,可以担任这种额外的工作(没必要由主类来实现,调用真实对象时,由代理来计算引用次数)--智能指引

单例模式

既一个类只实例化一个对象通常通过私有构造函数,开放一个静态的get方法返回一个实例对象。

分为懒汉模式和恶汉模式。

饿汉模式:将实例化的对象定义时直接new。

懒汉模式:get方法中判断对象时候实例化,如果实例化,直接返回。如果未实例化,实例化后返回。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值