zoukankan      html  css  js  c++  java
  • 架构设计

    1.在OO设计方面多考虑

      a.继承(课程---课班)对象组合

      b.封装(多利用泛型,委托事件等特性使方法更加通用)

      c.多态(方法重载,父子对象new等提高方法灵活性)

    2.对于基础的 委托 事件

      a.delegate(将方法可以当参数进行传递,使在方法内部可以调用到方法外部逻辑) 让程序的逻辑更自由

      b.event(提供了一种订阅-发布的实现方式)

      c.两者之间的异同1>事件是一种特殊类型的委托,事件只能在定义的内部去触发而委托可以在任何地方触发2>都可以实现发布订阅的过程

    3.设计原则,模式

      a.单一职责(一个对象只做一件事 比如邮箱的各个基本文件夹)

      b.接口隔离(将结构的定义和功能的实现分离开 以便达到同一个结构可以有不同的实现方式)

      c.开闭原则(对扩展开放,对修改封闭)

      d.依赖倒置DI(尽量把对象之间的依赖 转换到 对象与容器之间的依赖 以达到解耦的作用)

      1>简单工厂 2>抽象工厂 3>工厂方法 4>单件(在做邮件模块时例如把用户登录信息放到一个单例对象上在需要使用时通过单例对象获得,从而避免了到处参数传递的          问题)5原型模式(用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象

    4.高性能架构

      a.数据库的 insert delete,update操作

        为了缓解数据库并发更新带来的 数据库IO 性能瓶颈可以采用微软的消息队列(MSMQ)来处理(降低数据库并发问题)

      b.数据库的Select操作

        频繁的查询会导致数据库频繁的请求处理,利用缓存(单机/分布式(memryCache))来降低查询操作对数据库的频繁请求

      c.当一个数据库Table的数据量过大时,可以采用某种策略来分表从而将数据均匀的分布开来,降低了单表数据过大的瓶颈

      d.有时候业务变动很快,需要经常根据业务的变动来修改(add,delete,update)数据库Table的字段,由于DB的改动导致一大堆的相关应用程序需要同时修改

      很麻烦,为了应对快速需求的变动,可以将频繁变动的业务模型以json格式保存到DB的某个字段,当业务变化时只需修改相关的业务模型就可以轻松的应对变化

  • 相关阅读:
    iOS 面试题 1
    ios 面试题 0
    得到程序包路径
    UISwitch 监听响应
    在[self addsubView:xxx]中,self.name 和 _name的区别
    /调整button的title的位置
    //设置导航条背景图片
    警告框
    @synthesize
    打开控制台选中路径的文件夹
  • 原文地址:https://www.cnblogs.com/chengruhui/p/2717559.html
Copyright © 2011-2022 走看看