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

怎么做qq靓号网站物流公司官方网站物流专线

怎么做qq靓号网站,物流公司官方网站物流专线,中山响应式网站建设,川畅科技联系 网站设计《武林外传》老白曾经说过这样一句话。高手就是手里无刀#xff0c;心中也无刀。 类似于设计模式#xff0c;你不知不觉中已经融进你的代码中了#xff0c;但你并不知已经运用了。下面我总结几个我觉得比较常用的设计模式。 1#xff1a;设计模式分类 总体来说设计模式分为…《武林外传》老白曾经说过这样一句话。高手就是手里无刀心中也无刀。 类似于设计模式你不知不觉中已经融进你的代码中了但你并不知已经运用了。下面我总结几个我觉得比较常用的设计模式。 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 {//... } 类似如上。很多个ifelse进行嵌套。这样非常的难看不优雅。如果我们用策略模式替换会怎么样。 第一步定义一个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 ValidatorT {ValidatorT next();boolean handle(T t) throws FordealException; }public class BasicParameterValidator implements ValidatorValuationWO {Autowiredprivate ValidatorValuationWO tokenValidator;Overridepublic ValidatorValuationWO next() {return tokenValidator;}Overridepublic boolean handle(ValuationWO valuationWO) throws Exception {return next().handle(valuationWO);} } 最后 以上举了几个简单的例子做一个抛砖引玉还是希望同学们可以花一点时间去了解下比较常用的设计模式。不需要背下来多看看别人写的代码然后尝试去模仿慢慢的你就会发觉你就开始融会贯通了。做到手里无刀心中也无刀但实际上又快有准。 文章转载自程序员博博 原文链接https://www.cnblogs.com/wenbochang/p/8834587.html 体验地址引迈 - JNPF快速开发平台_低代码开发平台_零代码开发平台_流程设计器_表单引擎_工作流引擎_软件架构
http://www.w-s-a.com/news/704891/

相关文章:

  • 商务网站建设论文答辩pptseo技术博客
  • 怎样才能有自己的网站桂林搭建公司
  • 哪个网站做视频赚钱万科
  • 莆系医疗网站建设wp如何做网站地图
  • 网站建设应急处置方案团购网站 备案问题
  • 网站建设 岗位职责浙江中天建设集团有限公司网站
  • 西海岸建设局网站用wordpress建站学什么
  • 网站静态和动态学校网站建设流程步骤
  • 做群头像的网站在线怎么做俄语网站
  • 西安网站定制开发国内cms推荐
  • windows网站建设教程视频教程wordpress默认用户头像
  • 做网站需要什么软件wordpress会员邮件通知
  • 技术支持网站合肥网站搭建
  • 无为网站设计免费制作企业网站平台
  • 社交网站第一步怎么做房屋装修效果图用什么软件
  • 企业网站 批量备案合肥 网站建设
  • 如何提高网站索引量室内设计师之路网站
  • ps怎么做响应式网站布局图现在做网站都是怎么做的
  • 导购 网站模板网站主题选择
  • 毕业设计医院网站设计怎么做郑州铭功路网站建设
  • 网站根域名是什么php做商城网站步骤
  • 建设网站的那个公司好网站建设万首先金手指12
  • 广东民航机场建设有限公司网站网站开发后端用什么
  • 做风帆网站需要多少钱越野车网站模板
  • 如何做网站平台销售用狗做头像的网站
  • 宝安电子厂做网站美食网页设计的制作过程
  • 网站logo提交学网站开发技术
  • 跨境电商平台网站建设广州西安官网seo推广
  • 我和你99谁做的网站小程序制作第三方平台
  • 建设银行网站用户名鹤岗网站seo