题目:
有一个防火门,目前需要防火的功能,以后可能会需要扩展防盗的功能或者其他的功能。请利用你学过的面向对象设计的知识,设计一个方案让这个防火门以后更加利于扩展。考虑到题目叙述可能不清楚,我来说一个最弱智的思路。定义一个门的抽象父类,里面有防火、防盗、防……的方法。然后定义一个防火门的类继承,去真正实现这个防火的方法。当然上面这个肯定不利于扩展了,因为一次不可能把以后可能扩展的所有功能都写到父类里面去。所以防火门的这个类以后要扩展就很麻烦。现在请设计高手来设计这个程序,用父类、用接口、甚至用设计模式都好。写出你设计的代码,并且详细说明为什么你觉得这么设计是有利于以后扩展的(若是设计模式,请说明是哪一种设计模式,如:工厂)。谢谢。
最佳答案将得到100分。谢谢各位的付出。
有一个防火门,目前需要防火的功能,以后可能会需要扩展防盗的功能或者其他的功能。请利用你学过的面向对象设计的知识,设计一个方案让这个防火门以后更加利于扩展。考虑到题目叙述可能不清楚,我来说一个最弱智的思路。定义一个门的抽象父类,里面有防火、防盗、防……的方法。然后定义一个防火门的类继承,去真正实现这个防火的方法。当然上面这个肯定不利于扩展了,因为一次不可能把以后可能扩展的所有功能都写到父类里面去。所以防火门的这个类以后要扩展就很麻烦。现在请设计高手来设计这个程序,用父类、用接口、甚至用设计模式都好。写出你设计的代码,并且详细说明为什么你觉得这么设计是有利于以后扩展的(若是设计模式,请说明是哪一种设计模式,如:工厂)。谢谢。
最佳答案将得到100分。谢谢各位的付出。
接口 public object 放XXX();
类:防火implenment接口 实现public object 防火();
如果要防盗,你也可以实现接口啊public object 防盗();在其他类中只用接口声明变量,用的时候把类set进去(ioc)
防火防盗等等同归于一个接口 public interface IGuarder
public void guard();
}
//定义一个模版
public Abstract class guarder{
private void beforeGuardDo()//所有防xx的方法预备做的共同的步骤
private void afterGuardDo()//所有防xx的方法之后做的共同的步骤
}//策略模式
public class guardFire extends guarder
public class guardStealth extends guarder//观察者模式
public class Gate
{
private guarder[] guarders;
}
//被观察者就是Guarder
当新增一个被观察者的时候把被观察者写入到配置文件中
每次门一加载就读取配置文件当然,策略模式也可以改成装饰者模式,对门的具体功能进行装饰
这样也比较灵活,然后用工厂模式把最外层的装饰类放入到Gate类中就可以了
interface 放火able
interface 防盗ableclass 防火门 extends 门 implement 放火able
class 防盗门 extends 门 implement 防盗able
class 放火防盗门 extends 门 implement 放火able,防盗able
interface 关able
interface 通过able
interface 放火able
interface 防盗able
class 门 implement 开able,关able,通过able
class 防火门 extends 门 implement 放火able
class 防盗门 extends 门 implement 防盗able
class 放火防盗门 extends 门 implement 放火able,防盗able
interface 关able
interface 通过able
interface 放火able
interface 防盗able//虚父类,不实现接口的任何方法,限定其子类必须含有的功能
abstract class 门 implement 开able,关able,通过able
abstract class 防火门 extends 门 implement 放火able
abstract class 防盗门 extends 门 implement 防盗able
abstract class 放火防盗门 extends 门 implement 放火able,防盗able//实现类
class 盼盼门 extends 门
class 盼盼防火门 extends 防火门
class 盼盼防盗门 extends 防盗门
class 盼盼放火防盗门 extends 放火防盗门 class 熊猫门 extends 门
class 熊猫防火门 extends 防火门
class 熊猫防盗门 extends 防盗门
class 熊猫放火防盗门 extends 放火防盗门
interface 关able
interface 通过able
interface 放火able
interface 防盗able//虚父类,不实现任何方法,限定子类必须有的功能,也可以让三个功能也可以有不同实现;
abstract class 门 implement 开able,关able,通过able//实现类
class 盼盼门 extends 门
class 盼盼防火门 extends 盼盼门
class 盼盼防盗门 extends 盼盼门
class 盼盼放火防盗门 extends 盼盼门class 熊猫门 extends 门
class 熊猫防火门 extends 熊猫门
class 熊猫防盗门 extends 熊猫门
class 熊猫放火防盗门 extends 熊猫门
interface 关able
interface 通过able
interface 放火able
interface 防盗able//虚父类,不实现任何方法,限定子类必须有的功能,也可以让三个功能也可以有不同实现;
abstract class 门 implement 开able,关able,通过able//实现类
class 盼盼门 extends 门
class 盼盼防火门 extends 盼盼门 implement 放火able
class 盼盼防盗门 extends 盼盼门 implement 防盗able
class 盼盼放火防盗门 extends 盼盼门 implement 放火able ,防盗able class 熊猫门 extends 门
class 熊猫防火门 extends 熊猫门 implement 放火able
class 熊猫防盗门 extends 熊猫门 implement 防盗able
class 熊猫放火防盗门 extends 熊猫门 implement 放火able ,防盗able
{
public void 失火(Evnet e,门 d)
{
if(!d instenceof 防火able)
{
gameover();
}
}
}
定义一个父类:Door,在定义防火门,防盗门的类继承
定义一个接口:Function,防火,防盗的功能具体来实现
写一个测试类:里面实现策略模式。