面向对象,设计模式进一步理解

设计模式,是前人总结的经验,在不同的场景里解决不同的问题,所以不应该“简单”的复制,不应该为了模式而模式,应该是灵活应用的。

看了网上很多讲设计模式的,还有不少书籍也有,开始看的时候看不懂,再学了面向对象之后,发现那些例子(猫啊狗啊)什么的都可以看懂,但是,在具体的项目里面并不知道怎么去使用。

所有的代码因项目而异,设计模式的那些套路,不一定适合你。之所以看不懂,是因为记那些概念太多了,还有就是代码量不够,我们常讲的“量变”->“质变”,没有一定的代码量,是理解不了那些设计模式的。

跳出概念的限制

我们来看一段代码:


TEntity类中,没有CreationTime这个字段,但是他的父类IHasCreationTime中有,当时不理解的是,为什么转换成了父类,改变了属性CreationTime的值,model实例的值也就改变了呢?

设计模式讲“里氏替换原则”,讲了一大堆企鹅、鸟的一些概念,并没有讲到本质上,你发现你知道了书上讲的企鹅和鸟的关系,结果到代码理解还是比较模糊。

这里是应用了多态,传统的23中设计模式中,大部分都是以面向对象“多态”的特征来实现的,如果不懂多态,就不要学设计模式,体会不到好处。

上面代码中,为什么子类转换到父类,改变了“父类”的值,子类也改变了?

原因:子类到父类的转换,子类不管怎么转,他的实例不变,转到父类只是决定用什么(父类的)形式去访问罢了。而他实际的内存存储地址是不变的。 

多态:父类可以指向子类,父类可以接受子类,就这么简单。

面向对象三大特性:封装、继承、多态。

面向对象五大原则:单一职责、开闭原则、依赖倒置原则、里氏替换原则、接口隔离原则。

使用原则:优先使用组合,少用继承(孩子太多会坑爹)。

使用设计模式达到最好的效果就是:高内聚(模块内)、低耦合(模块间)

最好的设计模式,就是忘了设计模式,不要被条条框框概念限制,随手写得好代码,前提是学好内功心法,打好基础,多写多练,积累代码,量变到质变。



猜你喜欢

转载自blog.csdn.net/q646926099/article/details/79960687