针对类的三要素对设计模式分为三类
构造方法new:创建型模式
成员变量 :结构型模式
成员方法 :行为性模式
重用设计和代码 :
继承,组合→框架(SSH,SSM)→定制软件
常用模式举例:
单例模式:确保一个类只有一个实例,且自行实例化。并向整个系统提供这个实例。
原型模式(prototype):
使用Object的克隆clone方法,clone方法是底层方法,直接复制内存中的数据而非使用构造方法(进一步的有浅拷贝和深拷贝,对于引用对象,浅拷贝和深拷贝的关系类似于指针和重新malloc(mamory allocation))
装饰器模式:
也是对象增强的,对比类的继承
类继承 : 静态 对子类的扩展
装饰模式:动态 对象即可
工厂模式:(一般情况下,对象的创建与使用没有分开)而工厂模式中工厂类根据参数创建不同的实例
工厂模式中有: 简单工厂,抽象工厂,建造者模式(抽象工厂模式+组装类(导演类)=建造者模式) (简单工厂不符合开闭原则)
代理模式:对原有对象的增强
接口:(声明真实对象和代理对象的公共接口)
public interface AB{ void CD();}
public class A implements AB{
public void CD(){一个输出语句}
}
public A代理 implements InvocationHandler{
private A a;
public A代理(A a){super();this.a=a;}
public Object invoke(Object proxy,Method method, Object[] args)throws Throwable{
可放一个前处理方法
Object ret = method.invoke(a,args);
可放一个后处理方法
return ret;
}
public Object getProxyInstance(){
return Proxy.newPeoxyInstance(a.getClass().getClassLoader,a.getClass.getInterfaces(),this);
}
}
实现,测试类:
public class implementCase{
public void main(String[] args){
A a=new A();
A代理 a代理 =new A代理(a);
A 代理人=(A) a代理.getProxyInstance();
代理人.CD();
}
}