1. 在java里面,如果一个设计违反了OCP原则,即新增功能导致对现有代码的修改,可以通过以下途径解决:
* 使用反射(如在策略模式中可以通过反射+annotation的方式去探测到一个新增的策略类)
* 使用抽象机制(抽象出一个继承体系。如在抽象工厂模式中,当新增一种产品线时,新增一个具体工厂与之对应)
2. JAVA里面创建对象的方式
* new一个对象
* 通过反射(Class.newInstance())
* 序列化(实现Serializable接口)
* 直接通过字节码去生成一个对象(动态代理)
* Object.clone()方法 并实现Cloneable接口(实际上在clone方法中也是用new的方式去创建一个对象)