发布网友 发布时间:2022-04-23 10:29
共5个回答
热心网友 时间:2022-05-03 01:47
我的理解:
在很多时候,一个系统的应用框架是固定的,比如在一个处理文件的过程中,首先打开文件,然后处理文件,最后关闭文件。但是对于每一个类型的文件,处理文件的过程是不同的。所以,父类可以提供一个方法,而子类实现这个方法,这样,子类的行为就可以改变父类的执行过程。就像生产汽车,不同的汽车可能底盘、架子等都是相同的,不同的是细节。所以,框架性的生产可以放在一个部门中,而对于不同车型细节性的生产可以放在很多子部门中。这里,部门就可以看作父类,子部门就可以看作子类。如果以后想要增加一个车型,那么只需要增加一个子部门就可以了。
可以看一下《设计模式可复用面向对象软件的基础》这本书。讲的比较好。
另外,我觉得设计模式最重要的是应用,如果没有具体应用,这东西是不好理解的,而如果真正在应用中思考,那么可以很容易就融会贯通。
热心网友 时间:2022-05-03 03:05
把类D的细节行为 概括为 类A 虚函数函数,类A就可以操作了。
实际类A 就是做抽象行为就行了。
class A
{
B_base * b_obj;//B的父类,到底是什么也不知道
virtual int create()=0;
virtual int destroy()=0;
virtual int open()=0;
virtual int close()=0;
void test()
{
这里想new B只能 调用 create()
理论上你这里也不应该知道 B_base到底是谁
}
}
class D:public A
{
create(){ b_obj=new B 这里用什么就清楚了 }
}
热心网友 时间:2022-05-03 04:40
其实设计模式仅仅从书上是学不来
即使可以考满分,也不代表有设计的能力
多历练,多看书
热心网友 时间:2022-05-03 06:31
因为A可能还是一个比较概括地类,所以才需要D类来继承他,确定具体的针对对象。
举例来说,B类定义CPU,子类分别定义AMD和Intel的
A类定义笔记本,在A类中你并不知道具体用到那种CPU
所以你定义D类继承A类,D类具体化到笔记本型号,就可以知道用的是B的哪个子类了。
热心网友 时间:2022-05-03 08:39
要是java就简单了,可以用getClass()解决。