三端:安卓、ios、pc
seo:(搜索引擎优化)
信息优化,如网站标题、页面关键词、图片alt等。搜索引擎平台验证
网站 标题、关键字、网站介绍
页面
分类
网站地图
robots.txt
网站验证
dic:磁盘
云服务的三种模式
- IaaS(Infrastructure as a Service),即基础设施即服务
- PaaS(Platform-as-a-Service),即平台即服务
- SaaS(Software-as-a-Service),即软件即服务
1 创造型模式 五种
1.1 工厂方法模式
大多数境况下使用静态工厂方法模式
存在的问题:如果想要拓展程序,必须对工厂类进行修改,这违背了闭包原则
1.2 抽象工厂模式
创建多个工厂类,这样一旦需要增加新的功能,直接增加新的工厂类就可以了
1.3 单例模式
单例可以被延迟初始化,对于庞大的类,延迟加载有助于提升性能
单例可借助静态内部类实现
采用"影子实例"的办法为单例对象的属性同步更新
1.4 建造者模式
工厂模式关注的是创建单个产品,而建造者模式则关注创建符合对象,多个部分
1.5 原型模式
将一个对象作为原型,对其进行复制、克隆,产生一个和原对象类似的新对象
要实现深复制,需要采用流的形式读入当前对象的二进制输入,再写出二进制数据对应的对象。
2 结构性模式 七种
2.1 适配器模式
类适配器:有一个Source类,拥有一个方法,待适配,目标接口时Targetable,通过Adapter类,将Source的功能扩展到Targetable里
对象适配器:基本思路和类的适配器模式相同,只是将Adapter类作修改,不继承Source类,而是持有实例,以达到解决兼容性的问题
接口适配器:当不希望实现一个接口中所有的方法时,可以创建一个抽象类Wrapper,实现所有方法。写别的类的时候,继承抽象类即可
2.2 装饰器模式
装饰模式就是给一个对象增加一些新的功能,而且是动态的,要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例
装饰器模式的应用场景:
1、需要扩展一个类的功能。
2、动态的为一个对象增加功能,而且还能动态撤销。(继承不能做到这一点,继承的功能是静态的,不能动态增删。)
缺点:产生过多相似的对象,不易排错!
2.3 代理模式
代理模式就是多一个代理类出来,替原对象进行一些操作
如果已有的方法在使用的时候需要对原有的方法进行改进,采用一个代理类调用原有的方法,且对产生的结果进行控制。
这种方法就是代理模式。
2.4 外观模式
外观模式是为了解决类与类之间的依赖关系的,
将他们的关系放在一个Facade类中,降低了类类之间的耦合度,该模式中没有涉及到接口
2.5 桥接模式
桥接模式就是把事物和其具体实现分开,使他们可以各自独立的变化。像JDBC链接中的JDBC桥
2.6 组合模式
组合模式有时又叫部分-整体模式在处理类似树形结构的问题时比较方便
常用于表示树状结构:二叉树、B树…
2.7 享元模式
享元模式的主要目的是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用
3 行为型模式 十一种
3.1 策略模式
策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数
策略模式多用在算法决策系统中,外部用户只需要决定用哪个算法即可
3.2 模板方法模式
一个抽象类中,有一个主方法,再定义1…n个方法,可以是抽象的,也可以是实际的方法,定义一个类,继承该抽象类,重写抽象方法,通过调用抽象类,实现对子类的调用
3.3 观察者模式
当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化!对象之间是一种一对多的关系
类似于邮件订阅和RSS订阅
3.4 迭代子模式
迭代器模式就是顺序访问聚集中的对象
一是需要遍历的对象,即聚集对象,二是迭代器对象,用于对聚集对象进行遍历访问
JDK中各个类也都是这些基本的东西,加一些设计模式,再加一些优化放到一起的。
掌握好了,我们也可以写出自己的集合类,甚至框架
3.5 责任链模式
有多个对象,每个对象持有对下一个对象的引用,这样就会形成一条链,请求在这条链上传递,直到某一对象决定处理该请求
责任链模式可以实现,在隐瞒客户端的情况下,对系统进行动态的调整
链接上的请求可以是一条链,可以是一个树,还可以是一个环
在一个时刻,命令只允许由一个对象传给另一个对象,而不允许传给多个对象
3.6 命令模式
司令员(调用者)、命令、士兵(被调用者)三者相互解耦
目的就是达到命令的发出者和执行者之间解耦,实现请求和执行分开
Struts其实就是一种将请求和呈现分离的技术
3.7 备忘录模式
主要目的是保存一个对象的某个状态,以便在适当的时候恢复对象
假设有原始类A,A中有各种属性,A可以决定需要备份的属性;
备忘录类B是用来存储A的一些内部状态;
类C就是一个用来存储备忘录的,且只能存储,不能修改等操作
3.8 状态模式
当对象的状态改变时,同时改变其行为(类似QQ登录状态,同时切换后,你的好友也能看见)
状态模式在日常开发中用的挺多的,尤其是做网站的时候,我们有时希望根据对象的某一属性,区别开他们的一些功能,比如说简单的权限控制等。
3.9 访问者模式
访问者模式就是一种分离对象数据结构与行为的方法,通过这种分离,可达到为一个被访问者动态添加新的操作而无需做其它的修改的效果
该模式适用场景:如果我们想为一个现有的类增加新功能,不得不考虑几个事情:
- 新功能会不会与现有功能出现兼容性问题?
- 以后会不会再需要添加?
- 如果类不允许修改代码怎么办?
面对这些问题,最好的解决方法就是使用访问者模式,访问者模式适用于数据结构相对稳定的系统,把数据结构和算法解耦
3.10 中介者模式
中介者模式也是用来降低类类之间的耦合的,因为如果类类之间有依赖关系的话,不利于功能的拓展和维护,因为只要修改一个对象,其它关联的对象都得进行修改。
如果使用中介者模式,只需关心和Mediator类的关系,具体类类之间的关系及调度交给Mediator就行,这有点像spring容器的作用。
3.11 解释器模式
主要应用在OOP开发中的编译器的开发中,所以适用面比较窄
解释器模式用来做各种各样的解释器,如正则表达式等的解释器等
4 其他
4.1线程池模式
JAVA多线程设计模式(4)线程池模式
事先启动一定数目的工作线程。当没有请求工作的时候,所有的工人线程都会等待新的请求过来,一旦有工作到达,就马上从线程池中唤醒某个线程来执行任务,执行完毕后继续在线程池中等待任务池的工作请求的到达。
4.2并发型模式
Java 经典设计模式-- 05.并发型模式
并发模式并不属于典型的设计模式,所以它们的跨度和分散知识可能就很多
- 双重检查锁定
- 阻碍模式
- 守卫模式
- 线程特定存储
- 反应器模式
- 基于事件的异步模式
- 线程池模式
- 调度模式
- Lock 模式
- 消息设计模式
- 读写锁模式