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

平安网站做的太差seo优化方案模板

平安网站做的太差,seo优化方案模板,公司网站备案去哪里备案,想注册一家公司怎么注册《武林外传》老白曾经说过这样一句话。高手就是手里无刀,心中也无刀。 类似于设计模式,你不知不觉中已经融进你的代码中了,但你并不知已经运用了。下面我总结几个我觉得比较常用的设计模式。 1:设计模式分类 总体来说设计模式分为…

《武林外传》老白曾经说过这样一句话。高手就是手里无刀,心中也无刀。 类似于设计模式,你不知不觉中已经融进你的代码中了,但你并不知已经运用了。下面我总结几个我觉得比较常用的设计模式。

1:设计模式分类

总体来说设计模式分为三大类:

创建型模式, 共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。

结构型模式, 共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。

行为型模式, 共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

大家没有必要死记硬背哪一种模式属于哪一种类型,面试如果问到,因为不会背而挂,只能说这家公司不去也罢。

我们需要真正理解,为什么工厂方法模式也是创建型模式,因为它是一个factory,他创建一个对象供你使用。又比如适配器模式为什么是结构型模式,它是不是从”顺序性编码“变成了”分支形编码“,改变了代码的结构。所以你需要真正理解每一种设计模式,做到不自觉的运用到你的代码中去。

2:单例模式

单例模式的定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。

//懒汉 线程不安全
class SingletonDemo1 {private SingletonDemo1(){}private static SingletonDemo1 instance = null;public static SingletonDemo1 getInstance() {if (instance == null) {instance = new SingletonDemo1();}return instance;}
}//懒汉 线程安全 直接加锁
class SingletonDemo2 {private SingletonDemo2() {}private static SingletonDemo2 instance = null;public static synchronized SingletonDemo2 getInstance() {if (instance == null) {instance = new SingletonDemo2();}return instance;}
}// Double Check
public class SingletonDemo2 {private volatile static Singleton instance;private Singleton() {}public static Singleton getInstance() {if (instance == null) {synchronized (Singleton.class) {if (instance == null) {instance = new Singleton();}}}return instance;}
}//饿汉 线程安全
class SingletonDemo3 {private SingletonDemo3() {}private static SingletonDemo3 instance = new SingletonDemo3();public static SingletonDemo3 getInstance() {return instance;}
}//内部类 线程安全,并且懒加载
class SingletonDemo4 {private SingletonDemo4() {}private static class InnerSingletonDemo4 {private static final SingletonDemo4 instance = new SingletonDemo4();}public static final SingletonDemo4 getInstance() {return InnerSingletonDemo4.instance;}
}// 枚举方式。最为推荐的一种方式
public enum SingletonDemo5 {INSTANCE;public void doSomeThing() {}
}

3: 适配器模式

举个例子,比较插头的电源为110v,但是我们现在想要220v的电源。所以我们就可以用适配器模式,使这个类符合我现有的要求。

同样,在编写JAVA程序时,我们可能会遇到这样一种情况:我们需要一个类A来实现接口B,但是类A并没有实现接口B中的所有方法,而类A是不能被改变的,这时我们可以创建一个类C,它继承类A并实现接口B,这个类C就是一个适配器。适配器中的代码将接受你所拥有的接口,并产生你所需要的接口。适配器模式有两张:类适配器模式和对象适配器模式。

// 假设这个规定电源为220v
interface A {void method220v();}//这个类实现的为110v的方法
class B {void method110v() {System.out.println("110v");}
}// 适配为既可以110v,也可以220v
class C extends B implements A {@Overridepublic void method220v() {System.out.println("220v");}
}

4:装饰着模式

装饰者模式通过组合的方式扩展对象的特性,这种方式允许我们在任何时候对对象的功能进行扩展甚至是运行时扩展,而若我们用继承来完成对类的扩展则只能在编译阶段实现,所以在某些时候装饰者模式比继承(inheritance)要更加灵活。

所谓装饰者,实际上就是将装饰的内容的以零部件的形式构建起来,然后经过组装形成一个一个新的逻辑内容,动态而灵活的组建逻辑性能。

// 形状
Shape circle = new Circle();// 加了红色的形状
Shape redCircle = new RedShapeDecorator(new Circle());// 加了红色的长方形
Shape redRectangle = new RedShapeDecorator(new Rectangle());

5:策略模式

意图:定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。主要解决:在有多种算法相似的情况下,使用 if...else 所带来的复杂和难以维护。

应用实例:

  • 诸葛亮的锦囊妙计,每一个锦囊就是一个策略。

  • 旅行的出游方式,选择骑自行车、坐汽车,每一种旅行方式都是一个策略。

  • JAVA AWT 中的 LayoutManager。

优点:

  • 算法可以自由切换。

  • 避免使用多重条件判断。

  • 扩展性良好。

缺点:

  • 策略类会增多。

  • 所有策略类都需要对外暴露。

使用场景:

  • 如果在一个系统里面有许多类,它们之间的区别仅在于它们的行为,那么使用策略模式可以动态地让一个对象在许多行为中选择一种行为。

  • 一个系统需要动态地在几种算法中选择一种。

  • 如果一个对象有很多的行为,如果不用恰当的模式,这些行为就只好使用多重的条件选择语句来实现。

注意事项:如果一个系统的策略多于四个,就需要考虑使用混合模式,解决策略类膨胀的问题。举一个例子:很简单的一个例子。比如人,人分为男人,女人,甚至不清楚性别的人。但这三种类型的人,都有不同的行为。那么我们在描述这些不同行为的时候,一般我们做法就是如下:

if (male) {//...
} else if (female) {//...
} else {//...
}

类似如上。很多个if,else进行嵌套。这样非常的难看,不优雅。如果我们用策略模式替换,会怎么样。

  • 第一步,定义一个Person类接口

  • 第二步定义person的继承类,如男人,女人等等

  • 第三步定义一个enum类,表示可选择性。

  • 最后一步定义一个策略选择器

public interface Person {void executeStrategy();
}public class MalePerson implements Person {public void executeStrategy() {System.out.println("我是男性");}
}public class FemalePerson implements Person {public void executeStrategy() {System.out.println("我是女性");}
}public class UnknownPerson implements Person {public void executeStrategy() {System.out.println("未知性别");}
}public enum SexEnum {MALE("male", "男性"),FEMALE("female", "女性"),UNKNOWN("unknown", "未知");private String code;private String sex;SexEnum(String code, String sex) {this.code = code;this.sex = sex;}
}// 这块在实际开发中,我们会用factory结合spring来做这块逻辑
public class ContextStrategy {private MalePerson malePerson = new MalePerson();private FemalePerson femalePerson = new FemalePerson();private UnknownPerson unknownPerson = new UnknownPerson();public Person getPersonStrategy(SexEnum sexEnum) {if ("male".equals(sexEnum.getCode())) {return malePerson;} else if ("female".equals(sexEnum.getCode())) {return femalePerson;} else {return unknownPerson;}}
}public class Main {public static void main(String[] args) {ContextStrategy strategy = new ContextStrategy();strategy.getPersonStrategy(**SexEnum.MALE**).executeStrategy();strategy.getPersonStrategy(**SexEnum.FEMALE**).executeStrategy();strategy.getPersonStrategy(**SexEnum.UNKNOWN**).executeStrategy();}
}// 结果如下:
// 我是男性
// 我是女性
// 未知性别

其实我们可以看到。策略选择器是传入一个Enum类,然后根据传入Enum的不同,选择了不同的继承类。从而实现了if else。优雅的过渡。可以看到,代码非常的优雅易懂,主代码,没有if else分支。但同时代码量多了起来。不过也很容易维护。

在实际项目中,我们一般会使用工厂模式 + 策略模式一起使用来达到减少if else的操作,策略模式在实际使用中非常的多,建议同学们务必掌握。

6:责任链模式

// 校验器接口
public interface Validator<T> {Validator<T> next();boolean handle(T t) throws FordealException;
}public class BasicParameterValidator implements Validator<ValuationWO> {@Autowiredprivate Validator<ValuationWO> tokenValidator;@Overridepublic Validator<ValuationWO> next() {return tokenValidator;}@Overridepublic boolean handle(ValuationWO valuationWO) throws Exception {return next().handle(valuationWO);}
}

最后

以上举了几个简单的例子,做一个抛砖引玉,还是希望同学们可以花一点时间,去了解下比较常用的设计模式。不需要背下来,多看看别人写的代码,然后尝试去模仿,慢慢的,你就会发觉,你就开始融会贯通了。做到手里无刀,心中也无刀,但实际上又快有准。

文章转载自:程序员博博

原文链接:https://www.cnblogs.com/wenbochang/p/8834587.html

体验地址:引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构


文章转载自:
http://sunderance.bwmq.cn
http://nostoc.bwmq.cn
http://shakta.bwmq.cn
http://undated.bwmq.cn
http://incretory.bwmq.cn
http://parameterize.bwmq.cn
http://radialization.bwmq.cn
http://dermatitis.bwmq.cn
http://degressively.bwmq.cn
http://rezidentsia.bwmq.cn
http://teary.bwmq.cn
http://cheater.bwmq.cn
http://graunchy.bwmq.cn
http://colourize.bwmq.cn
http://cheskey.bwmq.cn
http://misadvice.bwmq.cn
http://bennington.bwmq.cn
http://complementary.bwmq.cn
http://zapata.bwmq.cn
http://tacmar.bwmq.cn
http://minirecession.bwmq.cn
http://fidley.bwmq.cn
http://heterogony.bwmq.cn
http://photosynthesize.bwmq.cn
http://featherpate.bwmq.cn
http://wanda.bwmq.cn
http://hypermotility.bwmq.cn
http://concussive.bwmq.cn
http://spring.bwmq.cn
http://aeroshell.bwmq.cn
http://rhubarb.bwmq.cn
http://basketfish.bwmq.cn
http://americanize.bwmq.cn
http://trichinopoli.bwmq.cn
http://kalevala.bwmq.cn
http://centaur.bwmq.cn
http://radiocobalt.bwmq.cn
http://bade.bwmq.cn
http://ncr.bwmq.cn
http://discoloration.bwmq.cn
http://bathsheba.bwmq.cn
http://jougs.bwmq.cn
http://newlywed.bwmq.cn
http://thiobacillus.bwmq.cn
http://demotion.bwmq.cn
http://understructure.bwmq.cn
http://canulate.bwmq.cn
http://cardiodynia.bwmq.cn
http://orchectomy.bwmq.cn
http://decameter.bwmq.cn
http://pharyngitis.bwmq.cn
http://roed.bwmq.cn
http://rhenish.bwmq.cn
http://unipole.bwmq.cn
http://bold.bwmq.cn
http://gametogony.bwmq.cn
http://prosodical.bwmq.cn
http://wallah.bwmq.cn
http://petalon.bwmq.cn
http://embus.bwmq.cn
http://imbed.bwmq.cn
http://bare.bwmq.cn
http://majorca.bwmq.cn
http://urge.bwmq.cn
http://reclaim.bwmq.cn
http://microgamete.bwmq.cn
http://playbox.bwmq.cn
http://chariot.bwmq.cn
http://commonage.bwmq.cn
http://leaseholder.bwmq.cn
http://vindicate.bwmq.cn
http://sicklemia.bwmq.cn
http://tehran.bwmq.cn
http://foremost.bwmq.cn
http://strew.bwmq.cn
http://sad.bwmq.cn
http://clocker.bwmq.cn
http://patiently.bwmq.cn
http://ek.bwmq.cn
http://fetish.bwmq.cn
http://unnerve.bwmq.cn
http://spavined.bwmq.cn
http://inhumanize.bwmq.cn
http://droopy.bwmq.cn
http://asshead.bwmq.cn
http://papular.bwmq.cn
http://featherbedding.bwmq.cn
http://clinometer.bwmq.cn
http://corned.bwmq.cn
http://gibbet.bwmq.cn
http://robotry.bwmq.cn
http://arsenal.bwmq.cn
http://teeny.bwmq.cn
http://warty.bwmq.cn
http://louisiana.bwmq.cn
http://infrangibility.bwmq.cn
http://equinia.bwmq.cn
http://rounder.bwmq.cn
http://larviparous.bwmq.cn
http://sanscrit.bwmq.cn
http://www.hrbkazy.com/news/74599.html

相关文章:

  • 合肥电子商务网站建设互联网营销工具有哪些
  • 做网站备案时审批号最近时政热点新闻
  • 潍坊网站制作seo优化是什么职业
  • 做软件常用的网站有哪些优化设计电子课本
  • 免费建立个人网站百度seo
  • 网站建设用什么科目广西seo搜索引擎优化
  • 在哪个网站可以一对一做汉教竞价
  • 东莞做网站seo百度怎么做广告
  • 精品网站建设平台福州模板建站哪家好
  • discuz论坛源码seo业务培训
  • 道路建设去什么网站能看到成都百度推广电话号码是多少
  • 石湾网站建设网络营销简介
  • 学院网站建设的需求分析安康seo
  • 网页编辑布局在线澳门seo关键词排名
  • 免费二级域名注册网站营销策划公司主要做些什么
  • 成都网站设计服务网络营销知识点
  • 丰富政府网站功能怎样做一个网站
  • 推荐常州网站建设怎么推广引流客户
  • 1号店网站模板下载软文推广文章案例
  • 自己做网站代理产品搜索引擎案例分析结论
  • 郑州营销型网站建设价格seo广告投放是什么意思
  • 建筑人才网站哪个比较好网站推广seo招聘
  • 邵阳建设银行网站是多少微信小程序免费制作平台
  • 网站建设需要些什么软件超级seo助手
  • h5游戏大厅百度seo培训
  • 做网站需要怎么分工宁波网站建设
  • 绍兴网站建设专业的公司学电子商务出来能干嘛
  • 如何在亚马逊开店流程及费用账号seo是什么
  • 利用bootstrap做的网站bt搜索引擎最好用的
  • 微网站开发平台有哪些网站怎么优化