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

thinkphp网站优化云客网平台

thinkphp网站优化,云客网平台,网站维护是什么工作,像饿了码的网站建站有吗确认好#xff1a; 模式名称 问题#xff1a;在何时使用模式#xff0c;包含设计中存在的问题以及问题存在的原因 解决方案#xff1a;设计模式的组成部分#xff0c;以及这些组成部分之间的相互关系#xff0c;各自的职责和协作方式#xff0c;用uml类图和核心代码描…确认好 模式名称 问题在何时使用模式包含设计中存在的问题以及问题存在的原因 解决方案设计模式的组成部分以及这些组成部分之间的相互关系各自的职责和协作方式用uml类图和核心代码描述 效果模式优缺点使用模式时应权衡的问题 创建型描述如何创建对象。5个 结构型如何实现类对象的组合。7个 行为型类和对象怎么交互以及怎么分配职责。11个 结合是处理类还是对象如单例模式是对象创建型模式 类之间的关系 1、关联。单向关联顾客和地址双向关联顾客与产品相互绑定自关联链表节点多重性关联界面上有多个按钮 聚合生命周期不同汽车与轮胎组合生命周期相同脸与鼻子 菱形箭头指向轮胎另一边右箭头 2、依赖。驾驶员与汽车。-----指向汽车 3、泛化。继承父类与子类。菱形箭头指向父类另一边无箭头。 在这基础上改为虚线就是接口实现指向接口 面向对象设计原则 1、单一职责一个类只负责一个功能领域中的相应职责。 2、开闭原则。实体对扩展开放对修改关闭。 3、里氏替换原则。所有引用基类对象的地方能够透明地使用其子类的对象。 4、依赖倒转原则。抽象不应该依赖于细节而是细节依赖于对象。 换言之要针对接口编程而不是针对实现编程。 一个具体类应当实现接口或抽象类中声明过的方法而不要给出多余的方法否则将无法调用到在子类中加的新方法。 将具体类的对象通过依赖注入(DI)的方式注入到其他对象构造注入设值setter注入接口注入 5、接口隔离原则。使用多个专门的接口而不使用单一的总接口。 应当为客户端提供尽可能小的单独的几口客户端不应该依赖那些它不需要的接口。因为实现一个接口就要实现该接口定义的所有方法。 6、合成复用原则。尽量使用对象组合而不是继承来达到复用目的。 聚合/组合应优于继承后者破坏了封装性前者耦合性低。 7、迪米特原则。一个软件实体应当尽可能少地与其他实体发生相互作用。 通过引入一个合理的第三者来降低现有对象之间的耦合度 创建型模式 单例模式 对象创建型模型 问题windows任务管理器点击多次只弹出一个页面真的 再比如负载均衡器的唯一性 demo1 private static A a null; 静态变量 public static A getA(){if(a null){ 但是这里初始化需要一段时间仍可能创建了多个loadBalancera new A();}return a; }为了解决上面的问题考虑到单例类的两个实现方式饿汉式和懒汉式。 饿汉式定义静态变量直接初始化见demo2资源效率不好可能初始化用不到该类并且初始化加载时间长 private static A a new A(); 静态变量 public static A getA(){return a; }懒汉式就是demo1在demo1的基础上我们引入线程锁定 demo3 private static A a null; public static A getA(){if(a null){ synchronized(LazySingleton.class){a new A();} }return a; }仍有问题假如两个线程同时判定了为空。引入双重检查锁定 demo4 private static A a null; public static A getA(){if(a null){synchronized(LazySingleton.class)if(a null){ // 第2重判断a new A();}}return a; }更好的方法 IoDH方法 增加一个静态内部类 demo5 private static Class B(){private final static A a new A(); } public static A getA(){return B.a;}简单工厂模式 集中式 对象创建型 静态工厂 Chart类实现柱状图、饼状图等不同图表的实现 创建和使用不应耦合在一起 工厂类 //demo1 class Factory{public static Chart getChart(String type){ //静态工厂实现Chart chart null;if(type.equalsIgnoreCase(h)){chart new HChart();}else if 。。。。。。 } }工厂方法 多态 对象创建型 解决静态工厂无法引入新产品 工厂 多个具体的 //demo1 interface Logger{public void w();} //抽象产品 class DLogger implements Logger{public void w(){.....}} //具体产品 interface Factory{public Logger getL();} //抽象工厂 class DLoggerFactory{public Logger getL(){DLogger d new DLogger();return d;} } //使用 Factory f; Logger l; f new DLoggerFactory(); l f.getL(); l.w();可以用读取配置文件来获取类字符串使用java的反射机制根据类名字符串生成对象 如创建一个字符串类型的对象通过类名生成实例对象并将其返回 Class c Class.forName(String); Object obj c.newInstance(); return obj;创建DOM对象 DocumentBuilderFactory dFactory DocumentBuilderFactory.newInstance(); DocumentBuilder builder dFactory.newDocumentBuilder(); Document doc;用xml文件配置 ?xml version 1.0 configclassNameFileLoggerFactory/className /cofigf new DLoggerFactory(); //改为 f (DLoggerFactory)XMLUtil.getBean();缺点类成对增加开销大 抽象工厂模式 产品族 对象创建型 比如界面风格 //抽象工厂 interface Factory{public Button createButton(); //两个抽象产品public TextField createTextField(); }//具体工厂 class SummerFactory{public Button createButton(){return new SummerButton;}; public TextField createTextField(){。。。。。}; }同样可以用xml配置文件反射得到java具体工厂 缺点再增加新的抽象产品很麻烦 P86/396 12.4 22:01留 原型模式 对象的克隆 对象创建型 //demo1 class ConcretePrototype implements Prototype{private String attr; // 成员变量public void setAttr(String attr){this.attr attr;}public String getAttr(){return this.attr;}// 克隆方法public Prototype clone(){Prototype prototype new Prototype();prototype.setAttr(this.attr);return prototype} }java中所有类都继承Object 类中的clone()方法而这个方法来自接口Clonable 浅克隆 主要区别是是否支持引用类型类、接口、数组的成员变量的复制。当引用类型时原型对象和克隆对象的成员变量指向相同的内存地址 深克隆 序列化实现将对象写到流中写到流中的对象是原有对象的一个复制品 Serializable接口两个类均要实现附件类Attachment 是下面一个类的属性 周报类WeeklyLog使用序列化实现深克隆 //demo2 public WeeklyLog deepclone(){//将对象写入流中ByteArrayOutputStream bao new ByteArrayOutputStream();ObjectOutputStream oos new ObjectOutputStream(bao);oos.writeObject(this);//将对象从流中读取ByteArrayInputStream bis new ByteArrayInputStream(bao.toByteArray());ObjectInputStream ois new ObjectInputStream(bis);return (WeeklyLog)ois.readObject(); }建造者模式 复杂对象的组装与创建 对象创建型 将一个复杂对象的构建与它的表示分离使得同样的构建过程可以创建不同的表示 客户端只需实例化指挥者类指挥者类针对抽象建造者编程客户端根据需要传入具体的建造者类型 指挥者将指导具体建造者一步一步地构造一个完整的产品 //产品 class Product{private String partA;private String partB; } //抽象建造者类 abstract class Buider{protected Product product new Product();public abstract void buildPartA();public abstract void buildPartB();//返回产品对象public Product getResult(){return product;} } //指挥者 class Director{private Builder builder;public Director(Builder builder){this.builder builder}//产品构建与组装方法public Product construct(){builder.buildPartA();builder.buildPartB();//决定次序} } //实现 Builder builder new ConcreteBuilder(); //可通过配置文件实现 Director director new Director(builder); Product product director.construct(); 工厂方法集中管理创建类型 关于指挥者 1、省略Director直接在具体建造者中construct构建 2、引入钩子方法返回类型是Boolean方法名一般是isXXX()定义在抽象建造者类中如是否光头 Bareheaded
http://www.hkea.cn/news/14564734/

相关文章:

  • 酒托做哪个网站好做网站特别简单的软件
  • 外贸公司英文网站怎么做网站权重排名
  • 做导航网站用什么cms深圳网页设计培训视频
  • 常州做网站的公司有哪些建网络商城网站吗
  • 公司企业如何做网站万网是干什么用的
  • 沈阳网站建设服务电话重庆妇科医院排名
  • 网页网站设计公司wordpress可以装多少会员数据库
  • 个人网站建设方案书框架栏目建立自己的网站平台的好处
  • 湖北联兴建设有限公司网站民宿网络营销方式
  • 北京网站页设计制作wordpress 暂时关闭
  • 厂家高端网站设计地址钢筋网片厂家电话
  • 台州seo网站管理企业融资计划书
  • 常州市建设局网站高端网站设计企业
  • c 网站做微信支付功能作风建设简报--门户网站
  • 网站怎么添加手机版凡科建站源码
  • 做网站设计电脑需要什么配置电子商务公司属于什么行业
  • 快速搭建网站页面重庆娱乐场所最新通知
  • 咖啡网站建设策划书a做爰网站
  • 毕设帮做网站如何建设个人网站和博客
  • 网页升级访问站作一个网站要多少钱
  • 如何看网站的关键词东莞做商城网站建设哪家好
  • 亚马逊品牌网站要怎么做织梦末班和dw建设网站哪个方便优化
  • 可以自己做装修效果图的网站旅游项目网站开发
  • 淘宝联盟建微网站导视设计书籍
  • 建设银行内部网站源码小程序链接如何转成网页链接
  • 网站设计的难点建网站内容
  • 做视频网站公司要怎么做微信精准推广
  • 江苏省交通建设局网站首页软文营销的缺点
  • 网站建设方案合同南山做网站多少钱
  • 怎样增加网站浏览量seo综合查询站长工具关键词