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

大连公司注册网站哈尔滨快速制作网站

大连公司注册网站,哈尔滨快速制作网站,凌风 wordpress 大学,门户网站申请1.单例模式 单例模式主要用于某个类有且只能用一个对象的场景#xff0c;单例模式下不能外部实例化对象#xff0c;由类内部自行私有化实例对象并提供一个可以获得该对象的方法。单例模式主要有饿汉模式#xff08;安全#xff0c;但在编译时就会自动创建对象#xff0c;…1.单例模式 单例模式主要用于某个类有且只能用一个对象的场景单例模式下不能外部实例化对象由类内部自行私有化实例对象并提供一个可以获得该对象的方法。单例模式主要有饿汉模式安全但在编译时就会自动创建对象即使不使用对象也会存在会造成一定资源的浪费、懒汉模式安全通过synchroized锁实现每次获取对象时都会加锁会对性能有一定影响、DCL模式基本安全通过synchroized锁实现在获取对象的方法内部加锁当已经实例化对象时不会加锁直接返回对象但在极少数情况下会出现线程不安全的情况、静态内部类模式安全在类内定义一个静态的私有化的类来实例化对象。 饿汉模式 public class CEO {private static final mCEO new CEO();//私有化实例化对象private CEO() { }//私有化构造方法public static CEO getCEO() {return mCEO;}//提供获取对象的接口 } 懒汉模式 public class CEO {private static CEO mCEO;private CEO() { }public static synchroized CEO getCEO() {if(mCEO null) {mCEO new CEO(); }return mCEO;}//synchroized加同步锁保证唯一 }DCL模式 public class CEO {private static CEO mCEO null;private CEO() { }public static CEO getCEO() {if(mCEO null) {synchroized(CEO.class) {if(mCEO null) {mCEO new CEO();}}}return mCEO;} }静态内部类模式当外部类被加载时静态内部类不会立即加载只有在第一次调用内部类的静态成员或方法时才会加载这样实现了懒加载的效果。同时类加载过程是线程安全的因此静态内部类单例模式也是线程安全的 public class CEO {private CEO() { }public static CEO getCEO() {return CEOInstance.mCEO;}//静态内部类private static class CEOInstance {private static final CEOInstance mCEO new CEO();} }2.构建者模式 用于创建复杂对象将对象的创建与表示分离、按步奏创建对象通常包含以下角色。 产品Product——要创建的复杂对象一般包含多种属性 抽象构建者Abstract Builder——创建产品的各个抽象方法以及返回最终产品的方法 具体构建者Concrete Builder——负责产品的具体创建以及最终产品的返回 指导者Director——使用构建者构建产品 public class Product {private String partA;private Int partB;private Double partC;public get();//相应参数的get方法public set();//相应参数的set方法 } public interface Builder {void buildPartA(String part);void buildPartA(Int part);void buildPartA(Double part);Product getProduct(); } public ConcreteBuilder implements Builder {private Product product;public ConcreteBuilder() {product new Product();}Overridepublic void buildPartA(String part) {product.setPartA(part);}Overridepublic void buildPartA(Int part) {product.setPartB(part);}Overridepublic void buildPartA(Double part) {product.setPartC(part);}Overridepublic Product getProduct() {return product;} } public class Director {private Builder builder;public void setBuilder(Builder builder) {this.builder builder;}public Product concreteProduct() {builder.builderPartA(partA);builder.builderPartB(45);builder.builderPartC(1.44);return builder.getProduct();} } //实际使用 ConcreteBuilder builder new ConcreteBuilder(); Director director new Director(); director.setBuilder(builder); Product product director.concreteProduct();3.工厂模式 特点向上转换思想不直接new对象子类具体决定实例化什么对象 应用需要生成复杂对象的地方 角色抽象工厂、具体工厂、抽象产品、具体产品 通用模式写法 抽象工厂——定义一个返回抽象产品的抽象方法该方法负责构造产品 具体工厂——重写构造产品的方法返回对象为具体产品 抽象产品——定义一个抽象方法该方法与产品关联 具体产品——根据具体产品重写父类中与产品关联的抽象方法 //抽象产品 public abstract class Product{public abstract void fuction(); } //具体产品A public class ProductA extends Product{Override public void function() {system.out.println(产品A的功能是...)} } //具体产品B public class ProductB extends Product{Override public void function() {system.out.println(产品B的功能是...)} }//抽象工厂写法 public abstract class Factory{public abstract Product createProduct(); } //具体工厂写法 public ConcreteFactoryA extends Factory {Overridepublic ProductA createProduct() {return new ProductA();} } public ConcreteFactoryB extends Factory {Overridepublic ProductB createProduct() {return new ProductB();} } //客户or测试 public class Client{public static void main(String[] args) {Factory factory new ConcerateFactoryA(); Product product factory.createProduct();product.fuction();} }4.原型模式 通过一个对象去创建克隆另一个与自己具有相同属性的对象需要继承Cloneable接口重写clone方法。 注意 1.克隆时不会调用构造函数因此一些成员变量的初始化不能放在构造函数里 2.原型模式要注意深拷贝和浅拷贝的问题 public Prototype implents Cloneable {private String mStr;//浅拷贝private ArrayListString mStrs new ArrayListString();//深拷贝Overridepublic Prototype clone() {try{Prototytpe obj (Prototype)super.clone();obj.mStr this.mStr;//obj.mStrs this.mStrs;//此处为浅拷贝obj.mStrs (ArrayListString)this.mStrs.clone();//此处为深拷贝return obj;} catch(Exception e) {...}return null;}public void setMstr(String str) {mStr str;}public void setMstrs(ArrayListString strs) {mStrs strs;}...//该类的其他方法 } public class Test{public static void main(String[] args) {Prototype prototype new Prototype();Prototype clonePrototype prototype.clone()//此处为初始化String 和 ArrayListString 会使用默认值} }
http://www.pierceye.com/news/193464/

相关文章:

  • 可以让外国人做问卷调查的网站济南优化seo网站建设公司
  • odoo做网站创建企业需要什么条件
  • 山西省旅游网站建设分析wordpress 个人介绍
  • 山东高级网站建设赚钱
  • 做网站大概要多少钱新建网站的外链多久生效
  • 天河区建设网站品牌网站建设小8蝌蚪
  • 深圳市企业网站seo点击软件小程序游戏开发公司
  • 南宁企业网站设计公怎么进wordpress
  • 商务网站建设一万字做视频剪辑接私活的网站
  • 网站开发绪论phpstudy建wordpress
  • 网站建设的基本流程有哪些wordpress产品页布局
  • 写过太原的网站免费漫画大全免费版
  • 毕业设计做系统好还是网站好冠县网站建设公司
  • 网站管理制度建设开发一个网站需要多少时间
  • 高校网站建设说明书微信公众号涨粉 网站
  • 深圳网站建设公司哪里好中国施工企业管理协会官网
  • 网站自动抢注步步高学习机进网站怎么做
  • 带域名的网站打不开深圳网站优化多少钱
  • 中国空间站科幻作文1000字网站建设从化
  • 做网站买一个域名就够了吗cn域名知名网站
  • 社科联网站建设个人网页英文
  • 做房产推广那个网站好网站改版建设原则
  • 网站建设 语言成都app
  • 免费建站的手机app专业做网站设计公司价格
  • 江苏宜兴做网站的电话seo基础培训
  • 企业手机端网站模板下载济南公司建站模板
  • 一般公司做网站多少钱南昌市房产网
  • 惠州网站小程序建设做公司永久免费网站什么好
  • 湖南涟钢建设有限公司网站局网站建设工作总结
  • 家乡ppt模板免费下载网站合肥百姓网网站建设