https://blog.csdn.net/yexunce3159/article/details/82773931
详细参考;https://github.com/ZhongFuCheng3y/3y/blob/master/src/designmode.md
ecplise案例:setTest 包下的modeltwo类中
1.共23种设计模式
创建型(5种):主要用于处理对象的创建,实例化对象:
单例,建造者,原型,工厂方法,抽象工厂结构型(7种):处理类或对象间的组合
适配器,装饰者,结合,桥接,外观,享元,代理行为型(11种):描述类或对象怎样进行交互和职责分配
策略,观察者,迭代器,命令,备忘录,中介者,解释器,访问者,责任链,状态,模板方法
2.单例中的懒汉式、饿汉式例子 ,以及线程安全性的懒汉式(DCL)、静态内部类:
public class modeltwo {
//饿汉式,先创建 /*private modeltwo(){}; private static modeltwo m=new modeltwo(); public static modeltwo getmodeltwo(){ return m; } //懒汉式private modeltwo(){} private static modeltwo m=null; public static modeltwo getInstanse(){ if(m==null){ m=new modeltwo(); } return m; }}//DCL, (特别在于关键字 volatile,synchronized的使用):
private modeltwo() {
}private static volatile modeltwo m = null;
private static modeltwo getInstanse() {
if (m == null) { synchronized (modeltwo.class) { if(m==null) m = new modeltwo(); } } return m;}
//静态内部类
private static class tt{
private static final modeltwo INSTANCE=new modeltwo(); } private static final modeltwo getInstanse(){ return tt.INSTANCE; }
3.主要的设计模式
代理模式:静态代理(需要自己写代理类),动态代理(不需要,运行时自动生成)
包装模式(装饰模式):对象增强的一种方式之一 ,(实现对象增强有三种方式:继承,包装模式,代理模式)
单例模式(一个类中只存在一个对象):懒汉、饿汉、枚举、DLC、静态内部类懒汉式
工厂模式(作用是用来向使用者屏蔽创建对象的细节):简单/静态工厂模式、工厂方法模式、抽象工厂模式 补充:SAX解析XML文件时,用到过工厂模式,还DAOFactory
策略模式:
门面模式:
模版方法:
4.参考语句:
(1) 其实我们使用设计模式的根本原因是提升项目的可维护性。
(2)在项目里,我们经常会收到需求变更,当我们引入设计模式(或原则)后,发现能让项目拥抱修改。
(3)在项目里,我们一般不会只用其中某个,而会根据一些原则来优化我们的代码
(4)遵循设计原则