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

建设网站要多久企业查询经营异常是怎么回事

建设网站要多久,企业查询经营异常是怎么回事,互联网公司网站,手机宣传网站文章目录 简介一、工厂模式介绍案例 二、抽象工厂模式介绍案例 三、单例模式介绍案例 四、建造者模式介绍案例 五、原型模式介绍案例 简介 本文介绍Java设计模式中创建型模式的五种 一、工厂模式 工厂模式#xff08;Factory Pattern#xff09;是 Java 中最常用的设计模式… 文章目录 简介一、工厂模式介绍案例 二、抽象工厂模式介绍案例 三、单例模式介绍案例 四、建造者模式介绍案例 五、原型模式介绍案例 简介 本文介绍Java设计模式中创建型模式的五种 一、工厂模式 工厂模式Factory Pattern是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式它提供了一种创建对象的最佳方式。 工厂模式提供了一种将对象的实例化过程封装在工厂类中的方式。通过使用工厂模式可以将对象的创建与使用代码分离提供一种统一的接口来创建不同类型的对象。 在工厂模式中我们在创建对象时不会对客户端暴露创建逻辑并且是通过使用一个共同的接口来指向新创建的对象。 介绍 意图定义一个创建对象的接口让其子类自己决定实例化哪一个工厂类工厂模式使其创建过程延迟到子类进行。 主要解决主要解决接口选择的问题。 何时使用我们明确地计划不同条件下创建不同实例时。 如何解决让其子类实现工厂接口返回的也是一个抽象的产品。 关键代码创建过程在其子类执行。 应用实例 您需要一辆汽车可以直接从工厂里面提货而不用去管这辆汽车是怎么做出来的以及这个汽车里面的具体实现。Hibernate 换数据库只需换方言和驱动就可以。 优点 一个调用者想创建一个对象只要知道其名称就可以了。扩展性高如果想增加一个产品只要扩展一个工厂类就可以。屏蔽产品的具体实现调用者只关心产品的接口。 缺点 每次增加一个产品时都需要增加一个具体类和对象实现工厂使得系统中类的个数成倍增加在一定程度上增加了系统的复杂度同时也增加了系统具体类的依赖。这并不是什么好事。 使用场景 日志记录器记录可能记录到本地硬盘、系统事件、远程服务器等用户可以选择记录日志到什么地方。数据库访问当用户不知道最后系统采用哪一类数据库以及数据库可能有变化时。设计一个连接服务器的框架需要三个协议“POP3”、“IMAP”、“HTTP”可以把这三个作为产品类共同实现一个接口。 注意事项作为一种创建类模式在任何需要生成复杂对象的地方都可以使用工厂方法模式。有一点需要注意的地方就是复杂对象适合使用工厂模式而简单对象特别是只需要通过 new 就可以完成创建的对象无需使用工厂模式。如果使用工厂模式就需要引入一个工厂类会增加系统的复杂度。 工厂模式包含以下几个核心角色 抽象产品 Abstract Product定义了产品的共同接口或抽象类。它可以是具体产品类的父类或接口规定了产品对象的共同方法。 具体产品 Concrete Product实现了抽象产品接口定义了具体产品的特定行为和属性。 抽象工厂 Abstract Factory声明了创建产品的抽象方法可以是接口或抽象类。它可以有多个方法用于创建不同类型的产品。 具体工厂 Concrete Factory实现了抽象工厂接口负责实际创建具体产品的对象。 案例 //将水果工厂抽象为抽象类添加泛型T由子类指定水果类型 public abstract class FruitFactoryT extends Fruit { //不同的水果工厂通过此方法生产不同的水果public abstract T getFruit(); } public class AppleFactory extends FruitFactoryApple { //苹果工厂直接返回Apple一步到位Overridepublic Apple getFruit() {return new Apple();} } 二、抽象工厂模式 抽象工厂模式Abstract Factory Pattern是围绕一个超级工厂创建其他工厂。该超级工厂又称为其他工厂的工厂。这种类型的设计模式属于创建型模式它提供了一种创建对象的最佳方式。 在抽象工厂模式中接口是负责创建一个相关对象的工厂不需要显式指定它们的类。每个生成的工厂都能按照工厂模式提供对象。 抽象工厂模式提供了一种创建一系列相关或相互依赖对象的接口而无需指定具体实现类。通过使用抽象工厂模式可以将客户端与具体产品的创建过程解耦使得客户端可以通过工厂接口来创建一族产品。 介绍 意图提供一个创建一系列相关或相互依赖对象的接口而无需指定它们具体的类。 主要解决主要解决接口选择的问题。 何时使用系统的产品有多于一个的产品族而系统只消费其中某一族的产品。 如何解决在一个产品族里面定义多个产品。 关键代码在一个工厂里聚合多个同类产品。 应用实例工作了为了参加一些聚会肯定有两套或多套衣服吧比如说有商务装成套一系列具体产品、时尚装成套一系列具体产品甚至对于一个家庭来说可能有商务女装、商务男装、时尚女装、时尚男装这些也都是成套的即一系列具体产品。假设一种情况现实中是不存在的但有利于说明抽象工厂模式在您的家中某一个衣柜具体工厂只能存放某一种这样的衣服成套一系列具体产品每次拿这种成套的衣服时也自然要从这个衣柜中取出了。用 OOP 的思想去理解所有的衣柜具体工厂都是衣柜类的抽象工厂某一个而每一件成套的衣服又包括具体的上衣某一具体产品裤子某一具体产品这些具体的上衣其实也都是上衣抽象产品具体的裤子也都是裤子另一个抽象产品。 优点当一个产品族中的多个对象被设计成一起工作时它能保证客户端始终只使用同一个产品族中的对象。 缺点产品族扩展非常困难要增加一个系列的某一产品既要在抽象的 Creator 里加代码又要在具体的里面加代码。 使用场景 QQ 换皮肤一整套一起换。生成不同操作系统的程序。 注意事项产品族难扩展产品等级易扩展。 抽象工厂模式包含以下几个核心角色 抽象工厂Abstract Factory声明了一组用于创建产品对象的方法每个方法对应一种产品类型。抽象工厂可以是接口或抽象类。 具体工厂Concrete Factory实现了抽象工厂接口负责创建具体产品对象的实例。 抽象产品Abstract Product定义了一组产品对象的共同接口或抽象类描述了产品对象的公共方法。 具体产品Concrete Product实现了抽象产品接口定义了具体产品的特定行为和属性。 抽象工厂模式通常涉及一族相关的产品每个具体工厂类负责创建该族中的具体产品。客户端通过使用抽象工厂接口来创建产品对象而不需要直接使用具体产品的实现类。 案例 一个工厂可以生产同一个产品族的所有产品这样按族进行分类显然比之前的工厂方法模式更好。 不过缺点还是有的如果产品族新增了产品那么我就不得不去为每一个产品族的工厂都去添加新产品的生产方法违背了开闭原则。 public class Router { } public class Table { } public class Phone { } public abstract class AbstractFactory {public abstract Phone getPhone();public abstract Table getTable();public abstract Router getRouter(); } 三、单例模式 单例模式Singleton Pattern是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类该类负责创建自己的对象同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式可以直接访问不需要实例化该类的对象。 单例模式是一种创建型设计模式它确保一个类只有一个实例并提供了一个全局访问点来访问该实例。 注意 单例类只能有一个实例。单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。 介绍 意图保证一个类仅有一个实例并提供一个访问它的全局访问点。 主要解决一个全局使用的类频繁地创建与销毁。 何时使用当您想控制实例数目节省系统资源的时候。 如何解决判断系统是否已经有这个单例如果有则返回如果没有则创建。 关键代码构造函数是私有的。 应用实例 一个班级只有一个班主任。Windows 是多进程多线程的在操作一个文件的时候就不可避免地出现多个进程或线程同时操作一个文件的现象所以所有文件的处理必须通过唯一的实例来进行。一些设备管理器常常设计为单例模式比如一个电脑有两台打印机在输出的时候就要处理不能两台打印机打印同一个文件。 优点 在内存里只有一个实例减少了内存的开销尤其是频繁的创建和销毁实例比如管理学院首页页面缓存。避免对资源的多重占用比如写文件操作。 缺点没有接口不能继承与单一职责原则冲突一个类应该只关心内部逻辑而不关心外面怎么样来实例化。 使用场景 要求生产唯一序列号。WEB 中的计数器不用每次刷新都在数据库里加一次用单例先缓存起来。创建的一个对象需要消耗的资源过多比如 I/O 与数据库的连接等。 注意事项getInstance() 方法中需要使用同步锁 synchronized (Singleton.class) 防止多线程同时进入造成 instance 被多次实例化。 案例 饿汉式单例 public class Singleton {//用于引用全局唯一的单例对象在一开始就创建好private final static Singleton INSTANCE new Singleton(); //不允许随便new需要对象直接找getInstanceprivate Singleton() {} //获取全局唯一的单例对象public static Singleton getInstance(){ return INSTANCE;} } 懒汉式单例 public class Singleton {//在一开始先不进行对象创建private static Singleton INSTANCE; private Singleton() {} //将对象的创建延后到需要时再进行 public static Singleton getInstance(){if(INSTANCE null) {synchronized (Singleton.class) {//内层还要进行一次检查双重检查锁定if(INSTANCE null) INSTANCE new Singleton(); }}return INSTANCE; }} 四、建造者模式 建造者模式 建造者模式Builder Pattern使用多个简单的对象一步一步构建成一个复杂的对象。这种类型的设计模式属于创建型模式它提供了一种创建对象的最佳方式。 一个 Builder 类会一步一步构造最终的对象。该 Builder 类是独立于其他对象的。 介绍 意图将一个复杂的构建与其表示相分离使得同样的构建过程可以创建不同的表示。 主要解决主要解决在软件系统中有时候面临着一个复杂对象的创建工作其通常由各个部分的子对象用一定的算法构成由于需求的变化这个复杂对象的各个部分经常面临着剧烈的变化但是将它们组合在一起的算法却相对稳定。 何时使用一些基本部件不会变而其组合经常变化的时候。 如何解决将变与不变分离开。 关键代码建造者创建和提供实例导演管理建造出来的实例的依赖关系。 应用实例 去肯德基汉堡、可乐、薯条、炸鸡翅等是不变的而其组合是经常变化的生成出所谓的套餐。JAVA 中的 StringBuilder。 优点 分离构建过程和表示使得构建过程更加灵活可以构建不同的表示。 可以更好地控制构建过程隐藏具体构建细节。 代码复用性高可以在不同的构建过程中重复使用相同的建造者。 缺点 如果产品的属性较少建造者模式可能会导致代码冗余。 建造者模式增加了系统的类和对象数量。 使用场景 需要生成的对象具有复杂的内部结构。需要生成的对象内部属性本身相互依赖。 建造者模式在创建复杂对象时非常有用特别是当对象的构建过程涉及多个步骤或参数时。它可以提供更好的灵活性和可维护性同时使得代码更加清晰可读。 注意事项与工厂模式的区别是建造者模式更加关注与零件装配的顺序。 案例 public class Student {...//一律使用建造者来创建不对外直接开放private Student(int id, int age, int grade, String name, String college, String profession, ListString awards) {...}public static StudentBuilder builder(){ //通过builder方法直接获取建造者return new StudentBuilder();}public static class StudentBuilder{ //这里就直接创建一个内部类//Builder也需要将所有的参数都进行暂时保存所以Student怎么定义的这里就怎么定义int id;int age;int grade;String name;String college;String profession;ListString awards;public StudentBuilder id(int id){ //直接调用建造者对应的方法为对应的属性赋值this.id id;return this; //为了支持链式调用这里直接返回建造者本身下同}public StudentBuilder age(int age){this.age age;return this;}...public StudentBuilder awards(String... awards){this.awards Arrays.asList(awards);return this;}public Student build(){ //最后我们只需要调用建造者提供的build方法即可根据我们的配置返回一个对象return new Student(id, age, grade, name, college, profession, awards);}} } 五、原型模式 原型模式Prototype Pattern是用于创建重复的对象同时又能保证性能。这种类型的设计模式属于创建型模式它提供了一种创建对象的最佳方式之一。 这种模式是实现了一个原型接口该接口用于创建当前对象的克隆。当直接创建对象的代价比较大时则采用这种模式。例如一个对象需要在一个高代价的数据库操作之后被创建。我们可以缓存该对象在下一个请求时返回它的克隆在需要的时候更新数据库以此来减少数据库调用。 介绍 意图用原型实例指定创建对象的种类并且通过拷贝这些原型创建新的对象。 主要解决在运行期建立和删除原型。 何时使用 当一个系统应该独立于它的产品创建构成和表示时。当要实例化的类是在运行时刻指定时例如通过动态装载。为了避免创建一个与产品类层次平行的工厂类层次时。当一个类的实例只能有几个不同状态组合中的一种时。建立相应数目的原型并克隆它们可能比每次用合适的状态手工实例化该类更方便一些。 如何解决利用已有的一个原型对象快速地生成和原型对象一样的实例。 关键代码 实现克隆操作在 JAVA 实现 Cloneable 接口重写 clone()在 .NET 中可以使用 Object 类的 MemberwiseClone() 方法来实现对象的浅拷贝或通过序列化的方式来实现深拷贝。原型模式同样用于隔离类对象的使用者和具体类型易变类之间的耦合关系它同样要求这些易变类拥有稳定的接口。 应用实例 细胞分裂。JAVA 中的 Object clone() 方法。 优点 性能提高。逃避构造函数的约束。 缺点 配备克隆方法需要对类的功能进行通盘考虑这对于全新的类不是很难但对于已有的类不一定很容易特别当一个类引用不支持串行化的间接对象或者引用含有循环结构的时候。必须实现 Cloneable 接口。 使用场景 资源优化场景。类初始化需要消化非常多的资源这个资源包括数据、硬件资源等。性能和安全要求的场景。通过 new 产生一个对象需要非常繁琐的数据准备或访问权限则可以使用原型模式。一个对象多个修改者的场景。一个对象需要提供给其他对象访问而且各个调用者可能都需要修改其值时可以考虑使用原型模式拷贝多个对象供调用者使用。在实际项目中原型模式很少单独出现一般是和工厂方法模式一起出现通过 clone 的方法创建一个对象然后由工厂方法提供给调用者。原型模式已经与 Java 融为浑然一体大家可以随手拿来使用。 注意事项与通过对一个类进行实例化来构造新对象不同的是原型模式是通过拷贝一个现有对象生成新对象的。浅拷贝实现 Cloneable重写深拷贝是通过实现 Serializable 读取二进制流。 案例 public class Student implements Cloneable{ //注意需要实现Cloneable接口Overridepublic Object clone() throws CloneNotSupportedException { //提升clone方法的访问权限return super.clone();} }
http://www.hkea.cn/news/14280964/

相关文章:

  • 网站开发贴吧有没有自动排名的软件
  • 响应式网站视频怎么做快站官网平台
  • 网站建设丷金手指专业十五合肥网络推广工作是做什么的
  • 简述建设一个网站的具体过程seo做的比较好的网站
  • 太原建设网站合肥建设云平台
  • 如何通过后台管理在网站的logo后台上加链接网页制作培训苏州
  • chrome不安全的网站设置现在学什么行业和技术前景好
  • 购物网站开发文档东莞 科技 公司 网站建设
  • 如何建平台网站移动应用开发技术
  • 图书信息管理系统代码网站建设网站建设论文开题报告
  • 博物馆网站建设必要性网站建设的制度
  • 个人网站设计过程关键词优化公司
  • 买完域名怎么创建网站百度智能云官网
  • 深圳惠州网站建设网站群如何做网站
  • 公司内部网站开发建立用英语怎么说
  • 手机网站优化怎么做网站建设工作会议
  • html5制作网站开发去设计公司还是去企业
  • 免费手机网站建站八桂云网站建设
  • 做网站必须要有数据库php网站开发简历
  • 迁安网站建设公司佛山建网站公司
  • 江苏优化网站公司哪家好怎么建淘宝优惠券网站做推广
  • 太仓智能网站开发手机营销型网站建设
  • 网站开发是否用html5动态域名免费申请
  • 网站建设dede模板免费在线设计网站大全
  • 广州网站建设 推广公司哪家好网站主页和子页怎么做
  • 网站建设需要多少钱?网站制作公司属于广告发布者吗
  • 网站怎么做区域性优化WordPress时间倒序
  • 网站备案流程是什么广告联盟平台
  • 贺州 网站建设公司有哪些网站建设公司销售提成
  • 网站做5级分销合法吗1.网站建设分为哪几个阶段