设计模式概述及详解-持续更新
来源:互联网 发布:lovecloud是什么软件 编辑:程序博客网 时间:2024/05/18 03:43
简单工厂模式和工厂模式
客户端提供一个条件给工厂,工厂根据条件返回客户端需要的对象。
它根据客户端传入的参数,生成不同的对象,调用对象的方法。
Calc add = CalcFactory.createCalc("add"); calc.calc(2,5); Calc reduce = CalcFactory.createCalc("add"); calc.calc(6,5);
工厂模式是简单工厂模式的一种扩展,一个工厂生产一个对象,符合设计模式的开闭原则。
AddFactory addFactory = new AddFactory();Calc add=addFactory.createCalc();add.calc(2,5);ReduceFactory reduceFactory = new ReduceFactory();Calc reduce=reduceFactory.createCalc();reduce.calc(5,2);
详解:http://blog.csdn.net/chijiandi/article/details/78841861
策略模式
客户端提供一个对象策略给Context环境类,Context根据策略调用方法。
Context context=new context(new Add()); context.calc(2,5); Context context=new context(new Reduce()); context.calc(6,5);
根据客户端传入的对象,实施不同的策略,调用方法。与简单工厂模式的不同在简单工厂根据参数暴露了对象给客户端,策略模式根据策略暴露具体的方法,但是要求客户知道策略的名称,可与与工厂模式一起使用。
单例模式
对某个类来说,其实例化对象有且仅有一个,并只提供一个创建它的方式。
对于单例模式的写法很多,概述为
懒汉单例模式
饿汉单例模式
双重校验锁
静态内部类
枚举
详解:http://blog.csdn.net/chijiandi/article/details/78834661
适配器模式
当开发后期,两个功能相似的接口因为都不太容易改,或当调用别人类似功能的接口时,通过适配器模式返回客户端一致的接口。
比如两个接口分别是:
void SayChinese();
void SayEnglish();
那么创建一个适配器Translator翻译 实现sayChinese接口
private English english; public Translator (English english){ this.english=english; } public void sayChinese(){ english.sayEnglish(); }
最后的实现效果即为:
People a = new Chinese(); Translator b = new Translator b(new English()); a.sayChinese(); b.sayChinese();
通俗的说就是把sayEnglish让适配器以sayChinese的形式展示给客户端。
详解:http://blog.csdn.net/chijiandi/article/details/78832952
代理模式
代理模式把客户端不容易进行交互的类通过代理与之进行交互
简单的代理运用可以理解为代购买东西,别人看到的是代购买了很多东西,代购其实花的是你的钱买东西。
代理模式是开放-封闭原则的具体实现之一。
可以理解为,代理扩展了原类的方法而不改变原类,
又或者说,代理保护了原类。
我将其放在适配器模式下是因为他们有一些地方比较像
以下是代理类
/*** @ClassName: Proxy * @Description: 代购,帮Person买苹果* @author cjd* @date 2017年12月18日 下午5:02:49 */public class Proxy implements BuyApple { private Person person; public Proxy(Person buyer) { this.person = buyer; } @Override public void buyApple() { System.out.println("出国"); person.buyApple(); System.out.println("回国把苹果8交给" + person.getName()); }}
其中同样内置了一个对象,可代理模式是在实现Person的原功能下进行扩展,
而适配器模式是将一个接口转换成另一个接口,当类的功能多了,两者的差异也会变大。
详解:http://blog.csdn.net/chijiandi/article/details/78838885
- 设计模式概述及详解-持续更新
- 设计模式概述-持续更新
- 设计模式 (持续更新)
- 设计模式学习日记二(持续更新)
- Java设计模式汇总,持续更新中
- 设计模式汇总(持续更新中)
- IOS 那些设计模式,持续更新中...
- 安装cocoapods及使用详解(持续更新)
- C#设计模式中细节总结-持续更新中
- Android源代码涉及的设计模式,持续更新
- java 设计模式浅析(持续学习更新)
- 23种设计模式(Java)--- 持续更新
- 【持续更新】简单记录一下常用的设计模式
- 设计模式概述及六大原则
- Android 模式 持续更新
- 设计模式概述及23中常用设计模式
- Hibernate-部分知识点概述(持续更新)
- Spring-部分知识点概述(持续更新)
- GIT TAG的使用
- 嵌入式系统
- 分库分表架构实践
- 棋盘问题系列
- mysql添加多个字段
- 设计模式概述及详解-持续更新
- 【SMS】SMS协议介绍之SMS-IWMSC
- 如何解决电商网站超卖现象
- 系统自动重启异常-总结网上看到的博文
- poj日记(1860)
- LINUX(socket)网络编程部分头文件归纳解释
- ehcache jgroups同步,节点重启初始化缓存bug.
- Python 列表 元组 字典
- 【SMS】SMS协议介绍之MSC