首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

浅谈设计方式

2012-09-06 
浅谈设计模式一、 单例模式官方定义:Ensure a class has only onstance , and provide a gobal point of ac

浅谈设计模式

一、 单例模式

官方定义:Ensure a class has only onstance , and provide a gobal point of access to it.(确保毛一个类只有一个实例,而且自行实例化并向整个系统提供这个实例)

通俗说:在古代,一个国家只能有一个皇帝,皇帝每天要上朝接待臣子、处理政务,但皇帝是唯一的,我们就只有将构造函数设置为private私有反复权限,从而禁止外部创建对象了。一般分为两个类,一个是Emperor(皇帝类),一个是Minnister(臣子类)。

?

?

//抽象模板类public abstract class AbstractClass{//基本方法protected abstract void doSomething();//基本方法protected abstract void doAnything();//模板方法public void templateMethod(){//调用基本方法,完成相关的逻辑功能this.doSomething();this.doAnything();}}//具体模板类public class ConCreteClass1 extends AbstractClass{//实现基本方法protected void doSomething(){}protected void doAnything(){}}public class ConCreteClass2 extends AbstractClass{//实现基本方法protected void doSomething(){}protected void doAnything(){}}//场景类public class Client{public static void main(String[] args){AbstractClass class1=new ConCreteClass1();AbstractClass class2=new ConCreteClass2();//调用模板方法class1.templateMethod();class2.templateMethod();}}
?

?

?

优点:①封装可变部分,扩展不变部分,把认为不变的算法封装到父类实现,而可变的则可以通过继承继续扩展;

?②提取公共部分的代码,便于维护;

?③行为有父类控制,子类实现,基本方法是有子类实现的,因此子类可以通过扩展的方式增加相应的功能

?

缺点:一般情况下,抽象类负责声明最抽象、最一般的事物的属性和方法,实现类完成具体的事物属性和方法。但模板方法颠倒了,抽象了定义了部分具体的抽象方法,有子类实现,子类执行的结果影响了父类的结果。

?

应用场景:①多个子类有公共的方法,并且逻辑基本相同;

? ? ? ?②重要、复杂的算法,可以核心的算法设计为模板

?

?

热点排行