面向对象思想和面向对象设计原则之间的关系

本文基于面向对象编程原则,阐述了如何利用继承、合成、抽象类、接口等机制解决代码复用性和扩展性问题。通过适配模式设计案例,展示了在不修改现有接口的情况下实现算法库重用的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

基于原则,利用面向对象的语法机制,得到某种问题的解决方案;
面相对象思想表达对象世界的概念空间:
1.从面向对象的思想出发,抽象对象的行为和属性,并给其分配一个类名;
2.1.基于同一类型的对象的抽象,考虑代码复用性,java提供了继承的机制;
2.2基于不同类型对象之间,考虑代码复用性,java提供了合成的机制;

4.1:基于对所有同类型本质相同的行为的描述,考虑扩展性,发明了抽象方法的概念来描述,将抽象方法进行封装的类叫抽象类;:

4.2:基于对不同类型对象本质相同的行为和部分同类型对象的本质相同的行为的描述,考虑扩展性,同样适用抽象方法的概念来描述,将抽象方法进行封装的类叫接口;

概念空间是否满足完备的空间,满足;

代码复用性–>共同行为;从同类对象和不同类对象两个完备角度

扩展性->抽象行为:从所有同类对象本质相同行为和部分同类对象本质相同行为,和不同类对象本质相同行为3个完备角度
面相对象概念空间机制的支持:

重写:子类和父类的行为本质相同,但是具体行为表现不同,java提供了重写的机制来描述;

多态;通过多态确保子类对象通过同名方法调用执行的是具体的子类对象的行为;

从面向对象的基本原则出发,根据模块活动,抽象出对象的行为和属性;

从语法和数据的角度,我们知道进行某一个操作可以有多种选择的方案;但是我们是否可以从面向对象的思想出发,根据当前的抽象要求,直接得出一个可靠的方案;
对于对象的行为,根据一定的要求,比如:
(一)对象的创建要求
1.进程只能实例化有限个的某对象--->即单例,多例的场景模式要求---->通用的操作方式--单例,多例模式设计
2.对象对自身的组成做了一定更新设置之后得到更新的对象实例--->即对象建造(区别于对象构造)的场景模式要求---->通用的操作方式-->builder模式设计
3.如何捕捉任意状态下的对象(包括该状态下对象的属性和行为能力)---->即拷贝对象的场景模式要求--->通用的操作方式--原型模式设计
4.对于对象的创建通过另外一个对象或者类来创建---->即工厂对象生产的实例的场景模式要求--->通用的操作方式-->工厂模式
(二)结构型模式要求
1.场景: Sunny软件公司在很久以前曾开发了一个算法库,里面包含了一些常用的算法,例如排序算法和查找算法,在进行各类软件开发时经常需要重用该算法库中的算法。在为某学校开发教务管理系统时,开发人员发现需要对学生成绩进行排序和查找,该系统的【场景条件1】设计人员已经开发了一个成绩操作接口ScoreOperation,在该接口中声明了排序方法sort(int[]) 和查找方法search(int[], int),为了提高排序和查找的效率,开发人员决定重用算法库中的快速排序算法类QuickSort和二分查找算法类BinarySearch,其中QuickSort的quickSort(int[])方法实现了快速排序,BinarySearch 的binarySearch (int[], int)方法实现了二分查找。
由于某些原因,现在Sunny公司开发人员已经【场景条件2】找不到该算法库的源代码,无法直接通过复制和粘贴操作来重用其中的代码;【场景条件3】部分开发人员已经针对ScoreOperation接口编程,如果再要求对该接口进行修改或要求大家直接使用QuickSort类和BinarySearch类将导致大量代码需要修改。
Sunny软件公司开发人员面对这个没有源码的算法库,遇到一个幸福而又烦恼的问题:如何在既不修改现有接口又不需要任何算法库代码的基础上能够实现算法库的重用?

问题:如何在既不修改现有接口又不需要任何算法库代码的基础上能够实现算法库的重用?

     从面向对象的思想出发,抽象出一个类,实现定义的接口来获取特定的功能,再根据面向对象的多态的机制则可以满足要求;具体的功能实现,我们可以借助算法库对应的两个类对象,在重写的特殊能力的方法中实现功能要求;

我们把上面的场景叫做适配场景,对应的通用操作方式是适配模式设计
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值