细菌是什么| 一什么方向| 心力憔悴是什么意思| 低血压不能吃什么食物| 0706是什么星座| 小孩肚脐眼周围疼是什么原因| 疤痕憩室什么意思| 心火吃什么药| im是什么意思| 女人梦见好多蛇是什么预兆| 斗战胜佛是什么意思| 命根子是什么| 什么是强直性脊柱炎| 黄水疮用什么药膏最快| 极性什么意思| 京东京豆有什么用| 资金盘是什么意思| 冰丝和天丝有什么区别| 贵圈是什么意思| 咽后壁淋巴滤泡增生吃什么药| 钠低会出现什么症状| 五指姑娘是什么意思| 情字五行属什么| 易孕体质是什么意思| 皮肤瘙痒是什么病的前兆| 11月1日什么星座| 送同学什么生日礼物好| 脚软没力气是什么原因引起的| 黄瓜敷脸有什么作用与功效| 为什么头顶会痛| bs是什么意思| 胃不好适合吃什么食物| 抽脂手术对身体有什么副作用| 农田种什么最赚钱| 腊肉炒什么菜最好吃| 什么的去路| 琉璃是什么材料| 银五行属性是什么| 6月18日什么星座| 鸳鸯浴是什么意思| 内分泌挂什么科| 心电图异常q波是什么意思| 饕餮是什么意思| 夜间尿多是什么原因| 螺旋杆菌吃什么药| 钩针ch是什么意思| 1964年属什么生肖| 睾丸皮痒用什么药膏| 什么叫玄关| 汗手适合盘什么手串| npc是什么| 小孩肚子痛挂什么科| 作风问题的核心是什么| 三秦是什么意思| 梦见死人是什么预兆| 牙龈疼痛吃什么药| 六月出生的是什么星座| 老鸨什么意思| 捭阖是什么意思| 固液法白酒是什么意思| 胃切除有什么影响| 大牛是什么意思| ber是什么意思| 司法警察是做什么的| 今天什么生肖| 炖猪排骨放什么调料| 太阳里面有什么| 为什么用英语怎么说| 痞气是什么意思| 程咬金的老婆叫什么| 五行海中金是什么意思| 苦涩是什么意思| 煮海带放什么容易烂| 脑梗输液用什么药| 婴儿拉肚子是什么原因造成的| cd什么意思| 为什么睡觉会突然抖一下| 属牛是什么命| 绿杨春属于什么茶| 生孩子送什么| 怀孕乳头会有什么变化| 7月15是什么星座| 梅毒病有什么症状| 莅临什么意思| 什么叫老人临终骨折| 鱼油不能和什么一起吃| 祛湿是什么意思| 又当又立是什么意思| 梦见头发白了是什么意思| 孛儿只斤现在姓什么| 玉历宝钞是什么书| 脱肛是什么原因造成的| 胎儿颈部可见u型压迹什么意思| 步幅是什么意思| 地势是什么意思| 黄芪加陈皮有什么功效| 给老师送什么礼物好| 带状疱疹不能吃什么食物| 什么地溜达| 8月24是什么星座| 默契是什么意思| 属狗的幸运色是什么颜色| 乙状结肠炎吃什么药| 绘本是什么| 炼奶是什么| 肛门痛什么原因| 肾阴阳两虚吃什么药| 白斑用什么药膏| 女人血虚吃什么补最快| 10月5号是什么星座| 什么粥最养胃| 什么微风| 猪的耳朵像什么| 高危型hpv阳性是什么意思| 尿酸高适合吃什么食物| 二本是什么学历| 津字五行属什么| 腰间盘突出有什么好的治疗方法| 持续是什么意思| 反刍什么意思| 海澜之家是什么档次| 为什么会长花斑癣| category是什么意思| 1.29是什么星座| 美尼尔氏综合症是什么病| 头晕有点恶心是什么原因| 维c有什么功效和作用| 周年祭日有什么讲究| 什么钙片补钙效果最好| 左手中指麻木是什么原因| 钙过量会有什么症状| 梦见游泳是什么预兆| 女生喝什么茶对身体好| u是什么元素| 服装属于五行什么行业| 微针是什么| 真菌感染用什么药膏| 去脂肪粒最有效的药膏叫什么| 女人吃什么补气血| 吃善存片有什么好处| 四面受敌是什么动物| 周天是什么意思| 社康是什么意思| 药店为什么不让卖高锰酸钾| 生什么什么什么| 木危读什么| 莲花代表什么象征意义| 大便为什么是绿色的| 补气血用什么泡水喝| 音序是什么意思| 什么病人要补氯化钾呢| 安全起见是什么意思| 什么是冰晶| 梦见胡萝卜是什么意思| 三个毛念什么字| 十一月份什么星座| 卵泡生成素高是什么原因| 为什么一热脸就特别红| 小苏打和柠檬酸反应产生什么| lemon是什么意思| 痛风脚痛吃什么药| 炒菜什么油最好| 贵州有什么烟| 头皮疼是什么原因| 岁月如歌是什么意思| 世界上最大的湖是什么湖| 为什么喝中药会拉肚子| 晚安安是什么意思| 右眼皮跳是什么意思| 皮肤痒有什么特效药| 爱钻牛角尖是什么意思| 黄毛什么意思| 什么水果含叶酸最多| iu是什么单位| 守夜是什么意思| 青石是什么石头| 一个m是什么品牌| 人心果什么时候成熟| 中元节是什么节| 乙肝25阳性什么意思| 下肢动脉闭塞吃什么药| 香赞是什么意思| 阿尔茨海默症是什么症状| 八方来财是什么生肖| 中焦不通吃什么药| 兰蔻是什么牌子| 死精是什么原因造成的| 脖子上为什么会长丝状疣| 两袖清风是什么生肖| 眼底出血有什么症状| 巨蟹座女和什么座最配| 一九八四年属什么生肖| 蒙脱石散是什么药| 208是什么意思| 村姑是什么意思| 血小板是干什么用的| 炖肉放山楂起什么作用| 来月经有异味什么原因| 副县长是什么级别干部| 雷人是什么意思啊| 红细胞体积偏高是什么意思| 痣是什么| 飞蚊症是什么原因| peace什么意思| 什么是染色体| 木槿花什么时候开花| 尿检隐血弱阳性是什么意思| 惊恐发作是什么病| 职级是什么意思| 眼睛有黑影是什么原因| 椁是什么意思| 为什么孩子要跟爸爸姓| 微信上面有个耳朵是什么意思| 尿胆原normal是什么意思| 吃鱼油有什么好处| 麦芽糖醇是什么| 梦见人头是什么征兆| 狮子女喜欢什么样的男生| 牛蒡是什么东西| 黄精什么功效| 碳14是检查什么的| 怀孕会有什么现象| 猪肝跟什么相克| 什么是肥皂剧| 一失足成千古恨是什么意思| 刺瘊子是什么原因造成的| 用什么香皂洗脸可以祛痘| 人生轨迹是什么意思| 2型糖尿病是什么意思| 柴鱼是什么鱼| 人体的三道防线是什么| 白茶泡出来是什么颜色| 中意你是什么意思| 框框是什么意思| 千千阙歌是什么意思| 新奇的什么| 糖醋排骨用什么醋好吃| 尿酸高什么意思| 检查免疫力都需要化验什么项目| 什么是保健食品| 脑白质变性是什么病| 儿童身高矮小挂什么科| 吃什么水果对肠胃好| 现字五行属什么| 1947年属什么生肖| 8.9是什么星座| 鳞状上皮细胞是什么| 普洱在云南什么位置| 西凤酒什么香型| macd什么意思| 女人内火旺喝什么降火| 什么药治高血压效果最好| 缘木求鱼什么意思| 不解大便是什么原因| 黑上衣配什么颜色裤子男| 慢性咽炎吃什么药效果最好| 什么是直男| 高碳钻是什么| 虹为什么是虫字旁| 盆腔积液什么症状| 内膜是什么| 左下腹疼是什么原因| 什么的葡萄| 糖尿病的人可以吃什么水果| 百度Jump to content

文史--山东频道--人民网

From Wikipedia, the free encyclopedia
Diagram of interactions in MVC's Smalltalk-80 interpretation
百度 美国空军2013年正式采纳该概念并开始进行一系列作战测试与评估。

Model–view–controller (MVC) is a software architectural pattern[1] commonly used for developing user interfaces that divides the related program logic into three interconnected elements. These elements are:

  • the model, the internal representations of information
  • the view, the interface that presents information to and accepts it from the user
  • the controller, the software linking the two.[2][3]

Traditionally used for desktop graphical user interfaces (GUIs), this pattern became popular for designing web applications.[4] Popular programming languages have MVC frameworks that facilitate the implementation of the pattern.

History

[edit]

One of the seminal insights in the early development of graphical user interfaces, MVC became one of the first approaches to describe and implement software constructs in terms of their responsibilities.[5]

Trygve Reenskaug created MVC while working on Smalltalk-79 as a visiting scientist at the Xerox Palo Alto Research Center (PARC) in the late 1970s.[6][7][8]:?330? He wanted a pattern that could be used to structure any program where users interact with a large, convoluted data set. His design initially had four parts: Model, view, thing, and editor. After discussing it with the other Smalltalk developers, he and the rest of the group settled on model, view, and controller instead.[6]

In their final design, a model represents some part of the program purely and intuitively. A view is a visual representation of a model, retrieving data from the model to display to the user and passing requests back and forth between the user and the model. A controller is an organizational part of the user interface that lays out and coordinates multiple Views on the screen, and which receives user input and sends the appropriate messages to its underlying Views. This design also includes an Editor as a specialized kind of controller used to modify a particular view, and which is created through that view.[6]

Smalltalk-80 supports a version of MVC that evolved from this one.[6] It provides abstract view and controller classes as well as various concrete subclasses of each that represent different generic widgets. In this scheme, a View represents some way of displaying information to the user, and a controller represents some way for the user to interact with a view. A view is also coupled to a model object, but the structure of that object is left up to the application programmer. The Smalltalk-80 environment also includes an "MVC Inspector", a development tool for viewing the structure of a given model, view, and controller side-by-side.[9]

In 1988, an article in The Journal of Object Technology (JOT) by two ex-PARC employees presented MVC as a general "programming paradigm and methodology" for Smalltalk-80 developers. However, their scheme differed from both Reenskaug et al.'s and that presented by the Smalltalk-80 reference books. They defined a view as covering any graphical concern, with a controller being a more abstract, generally invisible object that receives user input and interacts with one or many views and only one model.[10]

The MVC pattern subsequently evolved,[11] giving rise to variants such as hierarchical model–view–controller (HMVC), model–view–adapter (MVA), model–view–presenter (MVP), model–view–viewmodel (MVVM), and others that adapted MVC to different contexts.

The use of the MVC pattern in web applications grew after the introduction of NeXT's WebObjects in 1996, which was originally written in Objective-C (that borrowed heavily from Smalltalk) and helped enforce MVC principles. Later, the MVC pattern became popular with Java developers when WebObjects was ported to Java. Later frameworks for Java, such as Spring (released in October 2002), continued the strong bond between Java and MVC.

In 2003, Martin Fowler published Patterns of Enterprise Application Architecture, which presented MVC as a pattern where an "input controller" receives a request, sends the appropriate messages to a model object, takes a response from the model object, and passes the response to the appropriate view for display.[8]:?56? This is close to the approach taken by the Ruby on Rails web application framework (August 2004), which has the client send requests to the server via an in-browser view, these requests are handled by a controller on the server, and the controller communicates with the appropriate model objects.[12] The Django framework (July 2005, for Python) put forward a similar "model-template-view" (MTV) take on the pattern, in which a view retrieves data from models and passes it to templates for display.[13] Both Rails and Django debuted with a strong emphasis on rapid deployment, which increased MVC's popularity outside the traditional enterprise environment in which it has long been popular.

Components

[edit]

Model

[edit]

The central component of the pattern. It is the application's dynamic data structure, independent of the user interface.[14] It directly manages the data, logic and rules of the application. In Smalltalk-80, the design of a model type is left entirely to the programmer.[15] With WebObjects, Rails, and Django, a model type typically represents a table in the application's database.[16][17][18] The model is essential for keeping the data organized and consistent. It ensures that the application's data behaves according to the defined rules and logic.

View

[edit]

Any representation of information such as a chart, diagram or table. Multiple views of the same information are possible, such as a bar chart for management and a tabular view for accountants.

In Smalltalk-80, a view is just a visual representation of a model, and does not handle user input.[19] With WebObjects, a view represents a complete user interface element such as a menu or button, and does receive input from the user.[20] In both Smalltalk-80 and WebObjects, however, views are meant to be general-purpose and composable.[21][22]

With Rails and Django, the role of the view is played by HTML templates, so in their scheme a view specifies an in-browser user interface rather than representing a user interface widget directly.[23][24] (Django opts to call this kind of object a "template" in light of this.[25]) This approach puts relatively less emphasis on small, composable views; a typical Rails view has a one-to-one relationship with a controller action.[26]

Smalltalk-80 views communicate with both a model and a controller,[27] whereas with WebObjects, a view talks only to a controller, which then talks to a model.[28] With Rails and Django, a view/template is used by a controller/view when preparing a response to the client.[29][30]

Controller

[edit]
UML class diagram of an example controller in MVC architecture

Accepts input and converts it to commands for the model or view.[31]

A Smalltalk-80 controller handles user input events, such as button presses or mouse movement.[32] At any given time, each controller has one associated view and model, although one model object may hear from many different controllers. Only one controller, the "active" controller, receives user input at any given time; a global window manager object is responsible for setting the current active controller. If user input prompts a change in a model, the controller will signal the model to change, but the model is then responsible for telling its views to update.[33]

In WebObjects, the views handle user input, and the controller mediates between the views and the models. There may be only one controller per application, or one controller per window. Much of the application-specific logic is found in the controller.[34]

In Rails, requests arriving at the on-server application from the client are sent to a "router", which maps the request to a specific method of a specific controller. Within that method, the controller interacts with the request data and any relevant model objects and prepares a response using a view. Conventionally, each view has an associated controller; for example, if the application had a client view, it would typically have an associated Clients controller as well. However, developers are free to make other kinds of controllers if they wish.[35]

Django calls the object playing this role a "view" instead of a controller.[30] A Django view is a function that receives a web request and returns a web response. It may use templates to create the response.[36]

Interactions

[edit]

In addition to dividing the application into a model, a view and a controller component, the MVC design pattern defines the interactions between these three components :[37]

  • The model is responsible for managing the data of the application. It receives user input from the controller.
  • The view renders presentation of the model in a particular format.
  • The controller responds to the user input and performs interactions on the data model objects. The controller receives the input, optionally validates it and then passes the input to the model.

As with other software patterns, MVC expresses the "core of the solution" to a problem while allowing it to be adapted for each system.[38] Particular MVC designs can vary significantly from the traditional description here.[39]

Motivation

[edit]

As Alan Kay wrote in 2003, the original motivation behind the MVC was to allow creation of a graphical interface for any object.[40] That was outlined in detail in Richard Pawson's book Naked Objects.[40]

Trygve Reenskaug, originator of MVC at PARC, has written that "MVC was conceived as a general solution to the problem of users controlling a large and complex data set."[6]

In their 1991 guide Inside Smalltalk, Carleton University computer science professors Wilf LaLonde and John Pugh described the advantages of Smalltalk-80-style MVC as:

  • independence of presentation and data, e.g. multiple views on one model simultaneously,
  • composable presentation widgets, e.g. one view used as a subview of another,
  • switchable input modes, by swapping one controller out for another during runtime, and
  • independence of input and output processing, via the separate responsibilities of controllers and views.[41]

Use in web applications

[edit]

Although originally developed for desktop computing, MVC has been widely adopted as a design for World Wide Web applications in major programming languages. Several web frameworks have been created that enforce the pattern. These software frameworks vary in their interpretations, mainly in the way that the MVC responsibilities are divided between the client and server.[42] Early MVC frameworks took a thin client approach that placed almost the entire model, view and controller logic on the server. In this approach, the client sends hyperlink requests or form submissions to the controller and then receives a complete and updated web page (or other document) from the view; the model exists entirely on the server.[42] Later frameworks have allowed the MVC components to execute partly on the client, using Ajax to synchronize data.

See also

[edit]

References

[edit]
  1. ^ "The Principles of Clean Architecture by Uncle Bob Martin". YouTube. 15 December 2015.
  2. ^ Reenskaug, Trygve; Coplien, James O. (20 March 2009). "The DCI Architecture: A New Vision of Object-Oriented Programming". Artima Developer. Archived from the original on 23 March 2009. Retrieved 3 August 2019. More deeply, the framework exists to separate the representation of information from user interaction.
  3. ^ Burbeck (1992): "... the user input, the modeling of the external world, and the visual feedback to the user are explicitly separated and handled by three types of object."
  4. ^ Davis, Ian. "What Are The Benefits of MVC?". Internet Alchemy. Retrieved 2025-08-07.
  5. ^ Model–View–Controller History. C2.com (2025-08-07). Retrieved on 2025-08-07.
  6. ^ a b c d e Notes and Historical documents from Trygve Reenskaug, inventor of MVC.
  7. ^ "A note on DynaBook requirements", Trygve Reenskaug, 22 March 1979, SysReq.pdf.
  8. ^ a b Fowler, Martin (2003). Patterns of Enterprise Application Architecture. Pearson Education, Inc. ISBN 0-321-12742-0.
  9. ^ Goldberg, Adele (1984). Smalltalk-80: The Interactive Programming Environment. Addison-Wesley. ISBN 0-201-11372-4.
  10. ^ Krasner, Glenn E.; Pope, Stephen T. (Aug–Sep 1988). "A cookbook for using the model–view controller user interface paradigm in Smalltalk-80". The Journal of Object Technology. 1 (3). SIGS Publications: 26–49. Also published as "A Description of the Model–View–Controller User Interface Paradigm in the Smalltalk-80 System" (Report), ParcPlace Systems; Retrieved 2025-08-07.
  11. ^ The evolution of MVC and other UI architectures from Martin Fowler.
  12. ^ "Ruby on Rails Guides". Retrieved March 19, 2022.
  13. ^ "Django FAQ: Django appears to be a MVC framework, but you call the Controller the "view", and the View the "template". How come you don't use the standard names?". Retrieved March 19, 2022.
  14. ^ Burbeck, Steve (1992) Applications Programming in Smalltalk-80:How to use Model–View–Controller (MVC)
  15. ^ LaLonde, Wilf R.; Pugh, John R. (1991). Inside Smalltalk. U.S.A.: Prentice-Hall Inc. p. 8. ISBN 0-13-467309-3. The model can be any object without restriction.
  16. ^ WebObjects System Overview (PDF). Cupertino, CA: Apple Computer, Inc. May 2001. p. 28. In WebObjects, a model establishes and maintains a correspondence between an enterprise object class and data stored in a relational database.
  17. ^ "Active Record Basics". Rails Guides. Retrieved October 27, 2022. This will create a Product model, mapped to a products table at the database.
  18. ^ "Models". Django Documentation. Retrieved October 27, 2022. Generally, each model maps to a single database table.
  19. ^ LaLonde, Wilf R.; Pugh, John R. (1991). Inside Smalltalk. U.S.A.: Prentice-Hall Inc. p. 8. ISBN 0-13-467309-3. The view is responsible for providing a visual representation of the object.
  20. ^ WebObjects System Overview (PDF). Cupertino, CA: Apple Computer, Inc. May 2001. p. 28. View objects represent things visible on the user interface (windows, for example, or buttons).
  21. ^ LaLonde, Wilf R.; Pugh, John R. (1991). Inside Smalltalk. U.S.A.: Prentice-Hall Inc. p. 8. ISBN 0-13-467309-3. [MVC] permits views to be used as parts for assembly into larger units; new kinds of views can be constructed using existing views as subviews.
  22. ^ WebObjects System Overview (PDF). Cupertino, CA: Apple Computer, Inc. May 2001. p. 28. View objects tend to be very reusable and so provide consistency between applications.
  23. ^ "Action View Overview". Rails Guides. Retrieved October 27, 2022. Action View templates are written using embedded Ruby in tags mingled with HTML.
  24. ^ "Templates". Django Documentation. Retrieved October 27, 2022. A template contains the static parts of the desired HTML output as well as some special syntax describing how dynamic content will be inserted.
  25. ^ "Django FAQ: Django appears to be a MVC framework, but you call the Controller the "view", and the View the "template". How come you don't use the standard names?". Retrieved October 27, 2022.
  26. ^ "Action View Overview". Rails Guides. Retrieved October 27, 2022. Typically, the views share their name with the associated controller action...
  27. ^ LaLonde, Wilf R.; Pugh, John R. (1991). Inside Smalltalk. U.S.A.: Prentice-Hall Inc. p. 9. ISBN 0-13-467309-3. ...the view knows explicitly about the model and the controller.
  28. ^ WebObjects System Overview (PDF). Cupertino, CA: Apple Computer, Inc. May 2001. p. 28. Acting as a mediator between Model objects and View objects in an application is a Controller object.
  29. ^ "Action View Overview". Rails Guides. Retrieved October 27, 2022. In Rails, web requests are handled by action controller and action view. Typically, action controller is concerned with communicating with the database and performing CRUD actions where necessary. Action View is then responsible for compiling the response.
  30. ^ a b "Django FAQ: Django appears to be a MVC framework, but you call the Controller the "view", and the View the "template". How come you don't use the standard names?". Retrieved October 27, 2022. In Django, a 'view' describes which data is presented, but a view normally delegates to a template, which describes how the data is presented.
  31. ^ Simple Example of MVC (Model–View–Controller) Architectural Pattern for Abstraction
  32. ^ LaLonde, Wilf R.; Pugh, John R. (1991). Inside Smalltalk. U.S.A.: Prentice-Hall Inc. p. 8. ISBN 0-13-467309-3. The controller is responsible for interfacing between the user and the model/view. It interprets keyboard characters along with mouse movements and clicking.
  33. ^ LaLonde, Wilf R.; Pugh, John R. (1991). Inside Smalltalk. U.S.A.: Prentice-Hall Inc. p. 11. ISBN 0-13-467309-3.
  34. ^ WebObjects System Overview (PDF). Cupertino, CA: Apple Computer, Inc. May 2001. p. 28.
  35. ^ "Action View Overview". Rails Guides. Retrieved October 27, 2022. Typically, the views share their name with the associated controller action...
  36. ^ "Writing views". Django Documentation. Retrieved October 27, 2022.
  37. ^ Buschmann, Frank (1996) Pattern-Oriented Software Architecture.
  38. ^ Gamma, Erich et al. (1994) Design Patterns
  39. ^ Moore, Dana et al. (2007) Professional Rich Internet Applications: Ajax and Beyond: "Since the origin of MVC, there have been many interpretations of the pattern. The concept has been adapted and applied in very different ways to a wide variety of systems and architectures."
  40. ^ a b Alan Kay (23 May 2003). "is squeak really object oriented ?". Squeak Foundation mailing list. Retrieved 26 October 2021.
  41. ^ LaLonde, Wilf R.; Pugh, John R. (1991). Inside Smalltalk. Vol. 2. U.S.A.: Prentice-Hall Inc. pp. 8–9. ISBN 0-13-467309-3.
  42. ^ a b Leff, Avraham; Rayfield, James T. (September 2001). Web-Application Development Using the Model/View/Controller Design Pattern. IEEE Enterprise Distributed Object Computing Conference. pp. 118–127.

Bibliography

[edit]
甘薯和红薯有什么区别 三人死亡属于什么事故 黄体回声是什么意思 吃什么去湿气最快最有效 上海属于什么方向
血糖高注意什么 霉菌性阴道炎吃什么消炎药 宿醉是什么意思 乌龟用什么呼吸 缺维生素b吃什么食物
为什么会得心脏病 什么山什么水 年终奖是什么意思 心跳太慢吃什么药 一个雨一个散念什么
金银花不能和什么一起吃 什么屎不臭 菜板什么材质的好 明朝北京叫什么 6个月宝宝可以吃什么水果
精忠报国是什么意思hcv8jop4ns7r.cn 泰国是一个什么样的国家hcv9jop1ns3r.cn 什么是干细胞adwl56.com 常喝枸杞泡水有什么好处hcv8jop4ns3r.cn 6月7号是什么星座hcv9jop1ns3r.cn
亲友是什么意思hcv9jop4ns3r.cn 除是什么意思hcv7jop4ns7r.cn 肛门潮湿用什么药最好hcv8jop1ns8r.cn 子宫内膜回声不均匀是什么意思hcv7jop6ns0r.cn 高铁与动车有什么区别hcv7jop5ns6r.cn
胃胀是什么症状creativexi.com 血常规是什么意思hcv8jop5ns2r.cn 处女座女和什么星座最配hcv9jop4ns9r.cn sweat是什么意思hcv9jop3ns3r.cn 苦不堪言是什么意思hcv8jop7ns3r.cn
1984年属鼠五行属什么hcv9jop2ns7r.cn 黄芪丹参山楂泡水有什么功效helloaicloud.com 蜜蜂是什么牌子hcv8jop7ns2r.cn 喝什么茶好hcv8jop7ns2r.cn 睾丸疼挂什么科hcv7jop4ns6r.cn
百度