简单工厂模式
编程是一门技术,更加是一门艺术
我的理解:
将主函数代码和选择函数代码分离,称选择具体操作的函数为工厂(Factory)。典型例子是运算器,主函数只传入一个运算符和两个数,用工厂类进行进一步的加工选择。
策略模式
我的理解:
感觉和简单工厂的意思差不多,就是换了一种说法,有一个context类用于传入strategy,然后又strategy类选择不同的算法解决问题,话说这个strategy和factory真的有区别吗?
单一策略原则
我的理解:
很好理解吧,如果一个类承担了超过一种功能,或者说你有超过一个理由来修改一个类,那么你应该将这个类拆成两个类。
这一个我还是挺感同身受的,比如大作业写爬虫和处理机调度的时候,经常犯的毛病就是所有的函数实现都写在GUI类里面,其实是很不好的事情。
开放封闭原则
The Open-Closed Principle,是说软件实体应该支持扩展,但是不可修改。
同样很好理解,如果需求发生变化,最好的方法是增加代码,而不是修改源代码。原话写的很好,在我们最初编写代码时,假设变化不会发生。而一旦变化发生,立即采取行动,创建抽象以隔离以后发生的同类变化。
依赖倒转原则
A. 高层模块不应该依赖低层模块。两个都应该依赖抽象。
B. 抽象不应该依赖细节,细节应该依赖抽象。
我的理解:
A这句话最典型的例子就是计网的五层模型了,你把任何一层的协议修改了,但是服务不变,那么整个网络就没有问题,比如传输层是网络层的高层模块,那么网络层如果换了一种路由算法,高层是没有什么需要改变的东西的。
B更简洁的说法是针对接口编程,而不是针对具体实现编程。比如内核的malloc,可以让你在内核区,用户区,任何地方获取一块内存,这就是一个接口,而不是具体的对于某某页目录项,找到某某页,然后……这样的代码,确实不大行。