当前位置: 首页 > news >正文

生活做爰网站成都营销型网站建设公司

生活做爰网站,成都营销型网站建设公司,从零开始学手机网站开发教程,asp.net开发微网站开发大家好#xff0c;反转软件组件之间的依赖关系之所以重要#xff0c;是因为它有助于降低耦合度和提高模块化程度#xff0c;进而可以提高软件的可维护性、可扩展性和可测试性。 当组件之间紧密耦合时#xff0c;对一个组件的更改可能会对其他组件产生意想不到的影响#…大家好反转软件组件之间的依赖关系之所以重要是因为它有助于降低耦合度和提高模块化程度进而可以提高软件的可维护性、可扩展性和可测试性。 当组件之间紧密耦合时对一个组件的更改可能会对其他组件产生意想不到的影响从而导致整个系统中的连锁更改效应。通过反转依赖关系可以确保组件仅依赖于抽象而不是具体实现来减轻这个问题。 就ORM和模型类而言反转依赖关系允许ORM和模型类相互独立地发展有助于使代码更加模块化、更具可维护性。例如如果数据库模式发生更改可以更新ORM以反映新的模式而无需修改模型类。同样如果想切换到不同的ORM我们也可以这样做而无需修改模型类。 此外反转依赖关系还允许对每个组件进行单独测试从而使代码更具可测试性。例如可以为模型类编写单元测试而无需设置数据库连接因为模型类并不依赖于ORM。同样可以为ORM编写集成测试而无需实例化模型类因为ORM仅依赖于模型类的抽象。 1.代码示例 以下是一个使用Python中的SQLAlchemy反转ORM和模型类之间依赖关系的示例。首先使用元数据定义模式然后定义模型类最后使用映射器和关系设置ORM。 from sqlalchemy import create_engine, Column, Integer, String, ForeignKey from sqlalchemy.orm import sessionmaker, relationship, mapper from sqlalchemy.ext.declarative import declarative_base, declared_attr from sqlalchemy.schema import MetaData# 使用元数据定义模式 metadata  MetaData()class UserTable:declared_attrdef __tablename__(cls):return cls.__name__.lower()  sid  Column(Integer, primary_keyTrue)name  Column(String)email  Column(String, uniqueTrue)class PostTable:declared_attrdef __tablename__(cls):return cls.__name__.lower()  sid  Column(Integer, primary_keyTrue)title  Column(String)content  Column(String)user_id  Column(Integer, ForeignKey(users.id))# 定义模型类 class User:def __init__(self, name, email):self.name  nameself.email  emailclass Post:def __init__(self, title, content, author):self.title  titleself.content  contentself.author  author# 使用映射器和关系设置ORM engine  create_engine(sqlite:///example.db) Session  sessionmaker(bindengine) Base  declarative_base()class UserORM(Base, UserTable):propertydef model(self):return User(self.name, self.email)class PostORM(Base, PostTable):propertydef model(self):return Post(self.title, self.content, self.author.model)author  relationship(UserORM, backrefposts)Base.metadata.create_all(engine)# 在应用程序中使用ORM和模型类 session  Session()# 创建一些用户和帖子 user1  UserORM(nameAlice, emailaliceexample.com) user2  UserORM(nameBob, emailbobexample.com)post1  PostORM(titleMy first post, contentHello, world!, authoruser1) post2  PostORM(titleAnother post, contentThis is a test, authoruser2)# 将用户和帖子保存到数据库 session.add(user1) session.add(user2)session.add(post1) session.add(post2)session.commit()# 通过电子邮件地址检索用户 user  session.query(UserORM).filter_by(emailaliceexample.com).one() print(user.model.name)  # 打印出 Alice# 检索用户的帖子 for post in user.posts:print(post.model.title)  # 打印出 My first post在这段代码中首先使用元数据定义了模式并为数据库中的每个表定义了单独的类。然后定义模型类User和Post它们与相应的数据库表具有相同的属性。 接下来使用映射器将模型类映射到数据库表还定义了User模型和Post模型之间的关系其中User模型具有一个posts属性该属性是用户的帖子列表。 最后在应用程序中使用ORM和模型类创建一些用户和帖子并将它们保存到数据库中。然后通过电子邮件地址检索用户并打印他们的姓名以及检索用户的帖子并打印它们的标题。 通过以这种方式反转ORM和模型类之间的依赖关系使代码更加解耦且易于维护。我们可以更改数据库模式或ORM实现而不必修改模型类反之亦然这使得轻松测试模型类而无需设置数据库连接。 此外通过在ORM类中使用model属性来返回相应模型类的实例进一步反转了依赖关系因为现在ORM类依赖于模型类而不是相反。 通过使用元数据定义模式、定义模型类并使用映射器和关系来设置ORM可以实现ORM和模型类之间的依赖关系反转。通过这种方法可以使代码更加解耦且易于维护。 2.反转依赖关系 在上面的代码中通过以下方式实现了ORM和模型类之间的依赖关系反转 使用元数据定义数据库模式创建了一个metadata对象并使用它来使用SQLAlchemy的表结构定义数据库模式。 定义模型类定义了User和Post模型类它们代表了系统中的实体并定义这些实体的属性和行为。 使用映射器和关系设置ORM使用SQLAlchemy的mapper函数将ORM类映射到第1步中定义的数据库模式。还使用SQLAlchemy的relationship函数定义ORM类之间的关系例如User和Post之间的一对多关系。 通过这样做将ORM类与数据库模式和模型类解耦并使其依赖于SQLAlchemy提供的抽象例如元数据和映射器函数。这使得修改数据库模式或切换到不同的ORM实现变得更容易而无需修改模型类。它还使模型类更容易进行测试因为可以在不需要实例化ORM类或连接到数据库的情况下对其进行隔离测试。
http://www.hkea.cn/news/14308381/

相关文章:

  • 网站开发的上市公司有哪些站长之家html
  • 扬中网站推广托管工商注册核名查询官网
  • 在哪个网站找水利工地做小程序自助建站
  • 微信手机客户端网站建设做网站用微软雅黑侵权吗
  • 制作钓鱼网站的费用wap视频网站建设难吗
  • 招聘网站设计师要求自己制作免费网站
  • 网站内链少改怎么做wordpress写表格
  • 手机网站字体大小自适应网站开发建设推荐用书
  • 安徽建设监理协会网站做的网站为什么图片看不了怎么回事
  • 毕业设计做课程网站好中铁建设集团有限公司登录
  • 网站刷排名工具wordpress多站点使用期限插件
  • 2017年做那家网站好做网站用什么ui美观
  • 北京网站设计合理刻找人代做网站注意事项
  • 怎样让网站排名优化工没网站怎么做cpa
  • 阳江招聘网站普洱高端网站建设价格
  • 金华专业的网站建设应用公园app在线平台
  • 站酷网站的图是用什么做的WordPress 去掉副标题
  • 做静态网站程序员做网站赚钱
  • 双语网站怎么做的重庆是哪个省属于哪个省
  • 湖南教育平台网站建设深圳互联网公司排行榜100
  • 一叶子电子商务网站建设策划书制作一个网站的成本
  • 辽宁网站建设价格网站备案接入服务单位
  • 嘉纪商正网站建设公司公司网站建设接单
  • 黑龙江生产建设兵团知识网站工商网站查询企业信息武威
  • 艺术公司网站定制7天精通网站建设实录简介242
  • 网站栏目页面公司做一个网站如何定位
  • 商城网站建设公司哪家好wordpress调整配置文件
  • 网站建设要固定ip网络吗4435建站
  • 如何查看网站抓取频率洪山网站建设
  • 松江区做网站外贸wordpress模板下载