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

如何网站建设平台wordpress文件详解

如何网站建设平台,wordpress文件详解,中华门窗网怎么做网站,wordpress优惠代码目录 主要参考文章 设计模式的目的 设计模式的七大原则 设计模式的三大分类及关键点 1、创建型模式#xff08;用于解耦对象的实例化过程#xff09; 2、结构型模式 3、行为型模式 23种设计模式#xff08;乱序--现学现写#xff0c;不全面--应付面试为主#xff…目录 主要参考文章 设计模式的目的 设计模式的七大原则 设计模式的三大分类及关键点 1、创建型模式用于解耦对象的实例化过程 2、结构型模式 3、行为型模式 23种设计模式乱序--现学现写不全面--应付面试为主 单例模式 模板模式 哈哈哈哈哈 声明 此文只针对我个人的目前的理解程度来记录的有的我知道的或者觉得没有必要写的内容我就会省略掉。并且主要针对面试介绍的可能不是很全面甚至有的地方不是很正确请包涵。 主要参考文章 设计模式23模式介绍-CSDN博客 12-模板方法模式_12(模板方法模式)-CSDN博客 设计模式的目的 可重用性 (即相同功能的代码不用多次编写)可扩展性 (即当需要增加新的功能时非常的方便称为可维护)可靠性 (即当我们增加新的功能后对原来的功能没有影响)可读性 (即编程规范性, 便于其他程序员的阅读和理解)使程序呈现高内聚低耦合的特性。 设计模式的七大原则 固定记忆单 开 里 依 接 合 迪。 设计模式的三大分类及关键点 1、创建型模式用于解耦对象的实例化过程 单例模式某个类只能有一个实例提供一个全局的访问点。工厂模式一个工厂类根据传入的参量决定创建出哪一种产品类的实例。抽象工厂模式创建相关或依赖对象的家族而无需明确指定具体类。建造者模式封装一个复杂对象的创建过程并可以按步骤构造。原型模式通过复制现有的实例来创建新的实例。 2、结构型模式 装饰器模式动态的给对象添加新的功能。代理模式不修改原始对象通过代理对象来间接访问原始对象并在访问前后执行额外的操作。桥接模式将抽象部分和它的实现部分分离使它们都可以独立的变化。适配器模式将一个类的方法接口转换成客户希望的另一个接口。组合模式将对象组合成树形结构以表示“部分-整体”的层次结构。外观模式对外提供一个统一的方法来访问子系统中的一群接口。享元模式通过共享技术来有效的支持大量细粒度的对象。 3、行为型模式 策略模式定义一系列算法把他们封装起来并且使它们可以相互替换。模板模式抽象父类定义一个算法子类在不改变该算法结构的情况下重定义该算法的某些步骤。命令模式将命令请求封装为一个对象使得可以用不同的请求来进行参数化。迭代器模式一种遍历访问聚合对象中各个元素的方法不暴露该对象的内部结构。观察者模式对象间的一对多的依赖关系。仲裁者模式用一个中介对象来封装一系列的对象交互。备忘录模式在不破坏封装的前提下保持对象的内部状态。解释器模式给定一个语言定义它的文法的一种表示并定义一个解释器。建造者模式允许一个对象在其对象内部状态改变时改变它的行为。责任链模式将请求的发送者和接收者解耦使的多个对象都有处理这个请求的机会。访问者模式不改变数据结构的前提下增加作用于一组对象元素的新功能。 23种设计模式乱序--现学现写不全面--应付面试为主 单例模式--创建型 某个类只能有一个实例提供一个全局的访问点。 单例模式要素 私有构造方法私有静态引用指向自己实例 以自己实例为返回值的公有静态方法 单例模式好处 单例模式只允许创建一个对象因此节省内存避免了频繁的对象创建可以加快对象访问速度。 单例模式场景 需要频繁实例化然后销毁的对象创建对象时耗时过多或者耗资源过多但又经常用到的对象有状态的工具类对象 单例模式的实现方式分类 饿汉式单例 //线程安全的 public class Singleton {//单例模式构造器要私有化。private Singleton() {}//私有的静态的常量--私有静态引用指向自己实例。//【因为是static修饰的属性所以是在类加载的时候就被创建//后期不会再改变所以线程是安全的】private static final Singleton single new Singleton();//以自己实例为返回值的公有静态方法。public static Singleton getInstance() {return single;} } 懒汉式单例 //有线程安全的问题不推荐使用 //就算是使用了[加锁双重判断]的解救办法性能还是被损耗了。 public class SingletonTest {public static SingletonTest singleton null;public static SingletonTest getInstance(){if(singleton null){singleton new SingletonTest();}return singleton;}//单例模式构造器要私有化private SingletonTest {} } DCLDouble Check双重判断  Lock加锁懒汉式单例但线程安全推荐使用 //线程安全的 public class Singleton {private volatile static Singleton singleton;public static Singleton getSingleton(){//双重判断之一if(singletonnull){//加锁synchronized (Singleton.class) {//双重判断之二if (singleton null) {singleton new Singleton();}}}return singleton;}//构造函数私有化private Singleton(){} } 静态内部类懒汉式单例但线程安全 //线程安全的 //外部类加载时并不需要立即加载内部类内部类不被加载则不去初始化INSTANCE故而不占内存。 //第一次调用getInstance()方法会导致虚拟机加载SingleTonHoler类且初始化INSTANCE。 //在创建时是否有并发问题 没有没有类加载时jvm会保证线程安全性 public class Singleton {//静态内部类private static class SingleTonHoler{private static Singleton INSTANCE new Singleton();}public static Singleton getInstance(){return SingleTonHoler.INSTANCE;}//单例模式构造器要私有化private Singleton {} } 枚举类饿汉式 //枚举单例属于懒汉式还是饿汉式:饿汉式内部枚举类相当于静态成员变量 //类加载时就会创建因此也是线程安全的。 public class SingletonObject7 {private SingletonObject7(){}/*** 枚举类型是线程安全的并且只会装载一次*/private enum Singleton{INSTANCE;private final SingletonObject7 instance;Singleton(){instance new SingletonObject7();}private SingletonObject7 getInstance(){return instance;}}public static SingletonObject7 getInstance(){//内部枚举类相当于静态成员变量return Singleton.INSTANCE.getInstance();} } 破坏单例模式的场景及解决办法 1、反射是通过调用构造方法生成新对象的除枚举方式外其他方式都会被反射破坏单例所以如果我们想要阻止单例破坏可以在构造方法中进行判断若已有实例则阻止生成新的实例解决办法如下。 private SingletonObject(){if (instance ! null) {throw new RuntimeException(实例已经存在请通过 getInstance()方法获取);} } 2、如果单例类实现了序列化接口Serializable 就可以通过反序列化破坏单例反序列化不会调用构造函数--反序列化会用到反射但不是通过反射调用构造函数而是ObjectInputStream类的私有的readObject()方法--使用ObjectInputStream.readObject()读取进来之后如果是多次读取就会创建多个实例所以我们可以不实现序列化接口如果非得实现序列化接口可以在单例类中定义反序列化方法readResolve()在反序列化时直接返回单例对象。 import java.io.Serializable;// Singleton Box: class Box implements Serializable {private static Box instance new Box(TEST);public static Box getInstance() {return Box.instance;}private Box(String name) {this.name name;}private String name;Overridepublic String toString() {return Box name;}//【readResolve()方法】如果不写此方法反序列化时会破坏单例private Object readResolve() {return Box.getInstance();} } import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream;public class Foo {public static void main(String[] args) {Box box Box.getInstance();System.out.println(box.toString());try {ObjectOutputStream o new ObjectOutputStream(new FileOutputStream(e:/box.out));o.writeObject(box);o.close();} catch(Exception e) {e.printStackTrace();}Box box1 null, box2 null;try {ObjectInputStream in new ObjectInputStream(new FileInputStream(e:/box.out));box1 (Box)in.readObject();in.close();} catch(Exception e) {e.printStackTrace();}try {ObjectInputStream in new ObjectInputStream(new FileInputStream(e:/box.out));box2 (Box)in.readObject();in.close();} catch(Exception e) {e.printStackTrace();}System.out.println(box1.equals(box2) : box1.equals(box2));System.out.println(box1);System.out.println(box2);} } 模板模式--行为型 抽象父类定义一个算法子类在不改变该算法结构的情况下重定义该算法的某些步骤。 算法的整体步骤很固定但其中个别部分易变时这时候可以使用模板方法模式将相同部分的代码放在抽象的父类中而将不同的代码放入不同的子类中提高了代码复用性。 自定义lamabda表达式也符合此设计模式。 案例炒菜的步骤是固定的分为倒油、热油、倒蔬菜、倒调料品、翻炒等步骤。 /*** ClassName: AbstractClass* Description: 抽象类定义模板方法和基本方法* Author: Sevenyear*/ public abstract class AbstractClass {//模板方法定义//【为防止恶意操作模板方法一般都加上 final 关键词】public final void cookProcess() {pourOil();heatOil();pourVegetable();pourSauce();fry();}public void pourOil() {System.out.println(倒油);}//第二步热油是一样的所以直接实现public void heatOil() {System.out.println(热油);}//第三步倒蔬菜是不一样的一个下包菜一个是下菜心public abstract void pourVegetable();//第四步倒调味料是不一样public abstract void pourSauce();//第五步翻炒是一样的所以直接实现public void fry(){System.out.println(炒啊炒啊炒到熟啊);} } /*** ClassName: ConcreteClass_BaoCai* Description: 炒包菜类* Author: Sevenyear*/ public class ConcreteClass_BaoCai extends AbstractClass {Overridepublic void pourVegetable() {System.out.println(下锅的蔬菜是包菜);}Overridepublic void pourSauce() {System.out.println(下锅的酱料是辣椒);} } /*** ClassName: ConcreteClass_BaoCai* Description: 炒菜心类* Author: Sevenyear*/ public class ConcreteClass_CaiXin extends AbstractClass {Overridepublic void pourVegetable() {System.out.println(下锅的蔬菜是菜心);}Overridepublic void pourSauce() {System.out.println(下锅的酱料是蒜蓉);} } public class Client {public static void main(String[] args) {//炒包菜//创建对象ConcreteClass_BaoCai baoCai new ConcreteClass_BaoCai();//调用炒菜的功能baoCai.cookProcess();} }jdk案例InputStream抽象父类中已经定义好了读取字节数组数据的方法是每次读取一个字节并将其存储到数组的第一个空闲索引位置循环读取len个字节数据。具体如何读取一个字节数据是由子类实现的。 public abstract class InputStream implements Closeable {//抽象方法要求子类必须重写public abstract int read() throws IOException;public int read(byte b[]) throws IOException {return read(b, 0, b.length);}public int read(byte b[], int off, int len) throws IOException {if (b null) {throw new NullPointerException();} else if (off 0 || len 0 || len b.length - off) {throw new IndexOutOfBoundsException();} else if (len 0) {return 0;}int c read(); //调用了无参的read方法该方法是每次读取一个字节数据if (c -1) {return -1;}b[off] (byte)c;int i 1;try {for (; i len ; i) {c read();if (c -1) {break;}b[off i] (byte)c;}} catch (IOException ee) {}return i;} } 在InputStream类中定义了多个 read() 方法从上面代码可以看到无参的 read() 方法是抽象方法要求子类必须实现。而 read(byte b[]) 方法调用了 read(byte b[], int off, int len) 方法所以在此处重点看的方法是带三个参数的方法。 在该方法中可以看到调用了无参的抽象的 read() 方法。 享元模式--结构型 java常量池字符串常量池、Integer常量池的实现其实是基于享元模式通过共享技术来有效的支持大量细粒度的对象的思想可以节省创建的时间并且节省空间。 字符串常量池在java1.8中是在Java堆中的。在编译期就存在的字符串将会直接存入这个池中在不同代码地方的字面量形式的相同的字符串将会直接引用同一个字符串为什么能这样引用是因为字符串的不可变性。 策略模式--行为型 comparable和comparator
http://www.dnsts.com.cn/news/148705.html

相关文章:

  • 网站打开加速青岛模板网站建设价格
  • 为网站制定推广计划微信开发工具官网
  • 男女做污的事情网站你对网站第一印象
  • 用ps做网站切片网站设计方案公司
  • 建站公司兴田德润好不好新颖的公司名字大全
  • 网站建设中切图的意义中山模板建站软件
  • 环保公司网站模版东莞网络推广营销公司
  • iis 配置网站详解上海app开发技术公司
  • 网站 中国最早做网站的北京市住房和城乡建设网官网
  • 商盈网站建设网上开店货源的选择主要有
  • 民制作网站价格镇江网站设计开发公司电话
  • 创新的手机网站建设程序开发过程的四个步骤
  • 国家建设部标准官方网站企业建设门户网站成本如何
  • org做后缀的网站网站建设服务条款
  • 医院品牌网站建设cnnic可信网站
  • 建设个网站国外大气网站欣赏
  • 网站建设 拖欠尾款六安房产网
  • 万江区网站建设公司科技有限公司一般是做什么的
  • 检测网站是否被做跳转wordpress 文件上传大小
  • 东莞建设通网站怎么做公众号
  • 网站建设要咨询哪些计算机软件网站建设
  • 北京企业网站建设方黄骅市天气预报15天气
  • php网站模板带后台技术类网站模板
  • 做地方门户网站的资质太平洋网站开发
  • 网站浮动窗口代码广州注册公司流程
  • 网站推广策划书怎么说上海红酒网站建设
  • 家装公司排行榜长春百度搜索优化
  • 做教育机构网站湖南网站优化推广
  • 找团队做网站长春电商网站建设公司排名
  • 买别人做的网站能盗回吗东莞新感染一例阳性