策略模式涉及的问是超类与子类的问题。
使用条件:当你试图在超类中添加某一功能时使用。(并且该功能需要细分)
方法:不如将该功能抽象成接口,在超类中添加该接口对象,然后在某一具体类中实现该功能接口,最后在原来的子类的构造方法 中new不同的对象,即可实现不同的功能。子类的方法实现即可改为对 对象方法的直接调用。
在添加功能时,如果单写一个类,来实现这个功能,你的复用性会变得很差。如果你在父类中直接写一个抽象函数的话,每个子类你都要实现,会很复杂。
但是你通过在父类中添加一个功能对象,在子类中调用方法,在子类的构造方法中初始化该变量,即可完美解决这个问题。
优点:
1.在为需要该功能的类实现这个方法时,与写抽象方法不同,你可以通过对象.方法直接调用,减少了代码量。
2.相比与抽象方法,不需要这个功能的子类也不需要去实现。
这一设计模式完美的解决了为父类添加功能的问题。
核心:将功能抽象成功能接口。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)