设计模式概论
2013-08-07 13:48
120 查看
模式是经过实践总结下来的经验结晶,对于解决某一问题领域内很有帮助,不需要我们去重复思考,拿现成的模式去解决。模式并非是万能的,要合理的运用模式。
面向对象程序设计的最大好处是复用性、可扩展性和可维护性。有一些经验是值得借鉴的,以下来谈谈面向对象设计的原则:
1.依赖于抽象而不依赖于具体现实。
例如:有一个翻译类,有不同的实现,中国话翻译类,英语翻译类等,在实际的使用过程中不能直接硬编码,要依赖于抽象,这样就实现了解耦。抽象要么是接口类或者是父类指向子类的引用。
2.面向接口编程或者面向抽象编程。
从上面的可以看出,应该多使用面向接口编程,这样可以达到解耦的目的。一般与反射结合使用,效果会更好。
3.优先用组合而不是继承。
子类继承了父类的功能,如果在子类有与父类相同的方法就覆盖了,相当于重写,但组合就不会这样。而且Java只支持单继承,可以组合多个类。
还有其它的一些设计原则,这些在网上有讲得很详细的,可以参考网上其它的资料,我主要想讲经常使用得的一些经验之谈。
再看看对象之间的关联关系,毕竟对象不是孤立存在的。
1.依赖关系:是一种临时的关系,如:我有一把枪。用虚箭头来表示。
2.关联关系:是一种永久性的关系,如:你有父母。用实箭头来表示。
3.泛化关系:是一种抽象与具体的关系,如:汽车是车的子类。
4.聚合关系:是一种部分与整体的关系,如:车有四个轮子。这是一种不是很强的关系,没有轮子还是可以的,只是车不能开了。用空四角形与一条线表示。
5.组合关系:是一种很强的部分与整体的关系,如:人有心脏。没有心脏那是不行的。用实四角形与一条线表示。
面向对象程序设计的最大好处是复用性、可扩展性和可维护性。有一些经验是值得借鉴的,以下来谈谈面向对象设计的原则:
1.依赖于抽象而不依赖于具体现实。
例如:有一个翻译类,有不同的实现,中国话翻译类,英语翻译类等,在实际的使用过程中不能直接硬编码,要依赖于抽象,这样就实现了解耦。抽象要么是接口类或者是父类指向子类的引用。
2.面向接口编程或者面向抽象编程。
从上面的可以看出,应该多使用面向接口编程,这样可以达到解耦的目的。一般与反射结合使用,效果会更好。
3.优先用组合而不是继承。
子类继承了父类的功能,如果在子类有与父类相同的方法就覆盖了,相当于重写,但组合就不会这样。而且Java只支持单继承,可以组合多个类。
还有其它的一些设计原则,这些在网上有讲得很详细的,可以参考网上其它的资料,我主要想讲经常使用得的一些经验之谈。
再看看对象之间的关联关系,毕竟对象不是孤立存在的。
1.依赖关系:是一种临时的关系,如:我有一把枪。用虚箭头来表示。
2.关联关系:是一种永久性的关系,如:你有父母。用实箭头来表示。
3.泛化关系:是一种抽象与具体的关系,如:汽车是车的子类。
4.聚合关系:是一种部分与整体的关系,如:车有四个轮子。这是一种不是很强的关系,没有轮子还是可以的,只是车不能开了。用空四角形与一条线表示。
5.组合关系:是一种很强的部分与整体的关系,如:人有心脏。没有心脏那是不行的。用实四角形与一条线表示。
相关文章推荐
- RPC框架系列——Avro
- 阿里技术嘉年华---测试媛之旅
- 寄存器操作方法
- oracle ebs 定义下载命令
- Android实现win8磁铁效果
- makefle
- codeforces 60B Serial Time!
- python string和dict转换
- 最简单的三种不同创建方法
- zookeeper——启动zookeeper中的常见问题
- c#while循环注意continue的地方
- adf invokeAction 页面组件的变化
- 手机测试经验分享
- 2.4一元多项式的表示及相加
- 栅格数据管理 1
- 计算次数,有点 死循环的感觉,
- 自动全选和自动去除全选
- oracle index-by table的遍历
- ssh org.springframework.beans.TypeMismatchException
- Android 全局搜索条写成自定义控件-曹永思