十四.设计模式
1.创建型模式
单例模式、工厂模式、抽象工厂模式、建造者模式、原型模式
2.结构型模式
适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式
3.行为型模式
模板方式模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、接解释器模式、状态模式、策略模式、职责链模式、访问者模式
我用到的:单例、工厂、代理
单例模式:
它确保某一个类在系统中只有一个实例,并自行实例化,同时向外部提供获取这个唯一实例的接口。
特性:
单例类只有一个实例。
单例类必须自己实例化自己。
单例类需要向外提供实例。
代理模式:
①动态代理
实现方式:
1) 为真实类和代理类提供的公共接口或抽象类。(租房)
2) 真实类,具体实现逻辑,实现或继承a。(房主向外租房)
3) 代理类,实现或继承a,有对b的引用,调用真实类的具体实现。(中介)
4) 客户端,调用代理类实现对真实类的调用。(租客租房)
②静态代理
实现方式:
1) 公共的接口(必须是接口,因为Proxy类的newproxyinstance方法的第二参数必须是个接口类型的Class)
2) 多个真实类,具体实现的业务逻辑。
3) 代理类,实现InvocationHandler接口,提供Object成员变量,和Set方法,便于客户端切换。
4) 客户端,获得代理类的实例,为object实例赋值,调用Proxy.newproxyinstance方法在程序运行时生成继承公共接口的实例,调用相应方法,此时方法的执行由代理类实现的Invoke方法接管。
简单工厂模式:
就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
实现方式:
1) 抽象产品类(也可以是接口)
2) 多个具体的产品类
3) 工厂类(包括创建a的实例的方法)