多项选择题

A.抽象模板中步骤方法尽量设计为protected权限
B.不需要暴露的属性或方法尽量不要设置为protected权限
C.实现类若非必要,尽量不要扩大父类中方法的访问权限
D.对于重要、复杂的算法,可以把核心算法设计为模板方法,周边的相关细节功能则由各个子类实现