设计模式中的七大原则
一、开闭原则
对扩展开放,对修改关闭。
尽量对原来代码进行扩展,而不是在原有代码的基础上作修改。
比如我现在要写华为手机和小米手机的功能,那么我将他俩的共有特性抽象成一个中国品牌手机类。此时我突然又要写一个苹果手机的功能,那么我只能在中国品牌手机类的基础上将其修改成国内外手机(修改成苹果手机与另外两款中国手机共有的特性),如果这样的层级关系有上百层,修改起来将会带来巨大的麻烦。这就违反了开闭原则中的对修改关闭。
class ChineseMobilePhone {
// 中国手机独有的特征及使用功能
}
class HuaWei extends ChineseMobilePhone {
}
class XiaoMi extends ChineseMobilePhone {
}
改进方法: 我们再抽象出一个公共的手机类,让中国手机类去继承这个手机类。这样就可以在手机类下面添加我想要增加的其他手机品牌类了。(这里我写了一个美国手机类继承手机类,再用苹果手机类去继承这个美国手机类)这就满足了开闭原则中的对扩展开放。
class Phone {
// 手机独有的特征及使用功能
}
class AmericaPhone extends Phone {
// 美国手机独有的特征及使用功能
}
class ChineseMobilePhone extends Phone {
// 中国手机独有的特征及使用功能
}
class HuaWei extends ChineseMobilePhone { }
class XiaoMi extends ChineseMobilePhone { }
class Iphone extends AmericaPhone { }
总结:尽量用抽象和封装的思想,将类的共有特性抽象成一个更大的公共类,这样我们就可以在公共类下面进行元素的增加,而不必改动原有的代码了。