面向对象七大设计原则
开闭原则:面向对象的可复用设计的第一块基石,它是最重要的面向对象设计原则。简单地说,就是你的代码写完了,在不修改源代码的情况下还能拓展新需求。这样代码的可维护性就很强了,省的改的亲妈都不认识。
怎么实现呢,在代码层面来说,是使用抽象类,抽象类包含想要的功能,而具体的实现类都是它的子类,比如动物类Animal,它的子类有Dog和Cat,你在有一个功能类或者说操作类与Animal建立依赖关系,用setAnimal方法来具体实现是哪个动物,再调用Animal的eat方法,就实现猫吃鱼狗吃肉的对应实现类方法,那么拓展性在哪呢,你想做羊吃草,就给Animal多一个羊的子类就行了。
还有一种符合开闭原则的,就是咱们的一些参数,都写在配置文件上,这样也是达到不修改代码的情况下修改了参数。
单一职责原则:这个原则按照搜索的内容来说,说简单也简单,基本上就是一个类就负责一个作用,相同作用的功能就使用这一个类就行了,说难是难在设计上需要丰富的经验。之所以要一个类负责一个职责或者功能,就是为了方便维护,提高复用性,一个类的功能太多了,好多功能调用这个类,你修改就很麻烦,复用也不是很顺手,所以要求高内聚低耦合。也就是说,你有什么功能需求,就封装成一个类,这个类就这个功能,用就调用这个类就是了,别什么都往里塞。
里氏替换原则:看它正经的解释妥妥的会懵逼,简单的说就是,方法的参数是父类,你传子类没问题,能用不报错,参数是子类,你传父类妥妥的给你报错。我的理解就是多态,而且这个原则也是上面开闭原则的基础,方法的参数基本上就是父类,子类实现父类的方法,或者父类里面包含子类的方法,总之就是,只要是子类,就会对应不同的子类得出不同的结果,便于代码的复用和功能的拓展。
接口分离原则:简单点说,就是别什么方法都塞到一个接口里,这样的接口违反了职责单一原则,同时要实现接口不得实现所有方法吗?它不用的它也得实现,不就暴露了其他本来不该让别人看见的方法,这样不是破坏了封装性了吗,那么该怎么写接口呢?就按照职责单一来写,什么功能写什么接口,不要有多余用不到的方法,但也不要拆的太细,如果导致了接口数量庞大就没必要了。
首先是当前对象本身,
第二是以参数形式传入到当前对象方法中的对象
三是当前对象的成员变量
四是如果这个成员变量是个集合,那么集合中的元素也是朋友
五是当前对象所创建的对象。
其他的就不要产生直接通信。减少和避免与陌生人交互,如果需要交互调用的话,最好做一个中间类进行交互,这样的话,修改类的时候影响的只有中间类。