最少知识原则:
与直接接触的类沟通,不要通过一个类获得另一个类,再调用这个类方法
命令模式:
服务端把各个实现类的功能封装成一个个的命令类,这些命令类可以利用实现类的方法去达到某种特定的功能,然后把这些命令注册到RemoteControl类里
当某个命令注册到RemoteControl类中时,通过调用RemoteControl的某个方法通知RemoteControl,相当于把命令放进调用队列里了,此命令的执行会在某个时刻被执行
整个过程中,RemoteControl了解命令的实现,只是简单地在某个时候调用它的接口。所以这里是把调用和实现分离了。
例子:线程池。Android中的AsyncTask类
适配器模式:将一个类的接口,转换成客户期望的另一个接口。甜酸器让原本接口不兼容的类可以合作无间
客户通过目标接口调用适配器方法,适配器使用被适配器的方法去实现功能
例子:Android中的ListView的Adapter
外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用
通过组合原有类的接口来给使用者提供更简单的接口
例子:Android中的VideoView类
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法上的某些步骤。
模板方法(算法部分)被声明为final,不让子类继承,表示所有子类都应该使用这个方法。
声明为抽象类的方法让子类去实现,这是变化的部分
可以加入钩子方法,让子类去覆盖,从而影响父类的行为。
例子:Android中的Activity类
迭代器模式:提供一种方法顺序访问一个聚合对象的各个元素,而又不暴露其内部的表示
组合模式:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合
例子:View及ViewGroup
与直接接触的类沟通,不要通过一个类获得另一个类,再调用这个类方法
命令模式:
服务端把各个实现类的功能封装成一个个的命令类,这些命令类可以利用实现类的方法去达到某种特定的功能,然后把这些命令注册到RemoteControl类里
当某个命令注册到RemoteControl类中时,通过调用RemoteControl的某个方法通知RemoteControl,相当于把命令放进调用队列里了,此命令的执行会在某个时刻被执行
整个过程中,RemoteControl了解命令的实现,只是简单地在某个时候调用它的接口。所以这里是把调用和实现分离了。
例子:线程池。Android中的AsyncTask类
适配器模式:将一个类的接口,转换成客户期望的另一个接口。甜酸器让原本接口不兼容的类可以合作无间
客户通过目标接口调用适配器方法,适配器使用被适配器的方法去实现功能
例子:Android中的ListView的Adapter
外观模式:提供了一个统一的接口,用来访问子系统中的一群接口。外观定义了一个高层接口,让子系统更容易使用
通过组合原有类的接口来给使用者提供更简单的接口
例子:Android中的VideoView类
模板方法模式:在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法上的某些步骤。
模板方法(算法部分)被声明为final,不让子类继承,表示所有子类都应该使用这个方法。
声明为抽象类的方法让子类去实现,这是变化的部分
可以加入钩子方法,让子类去覆盖,从而影响父类的行为。
例子:Android中的Activity类
迭代器模式:提供一种方法顺序访问一个聚合对象的各个元素,而又不暴露其内部的表示
组合模式:允许你将对象组合成树形结构来表现“整体/部分”层次结构。组合能让客户以一致的方式处理个别对象以及对象组合
例子:View及ViewGroup