精华内容
下载资源
问答
  • 构建营销新模式PPT

    2020-12-12 15:55:19
    为了规定营销管理、提升经营绩效、特制定本方法,赶快来下载构建营销新模式PPT进行学习参考吧!学习参考...该文档为构建营销新模式PPT,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看看
  • 师生交往质量的好坏,关系着教育、教学的效果及学生的发展,但传统交往模式阻碍新型师生交往模式构建。在这样的背景下,借助教育交往理论,探索传统师生交往模式存在的问题,剖析其原因,寻求构建新型师生交往模式的若干...
  • 本文系统总结了近年来民爆行业安全监管现状,深入剖析了影响当前安全监管成效的主要问题,研究探讨了科学构建新常态民爆安全监管模式,提出了健全和完善安全监管的对策建议。
  • 构建模式 有三种方法可以用Java编程语言创建对象: 伸缩构造函数(反)模式 Javabeans模式 建造者模式 与其他两种方法相比,我更喜欢使用构建模式。 为什么? Joshua Bloch描述了构建模式...

    构建器模式

    有三种方法可以用Java编程语言创建新对象:

    1. 伸缩构造函数(反)模式
    2. Javabeans模式
    3. 建造者模式

    与其他两种方法相比,我更喜欢使用构建器模式。

    为什么?

    Joshua Bloch描述了构建器模式以及在Effective Java中使用它的好处。 他的工作非常出色,在这篇博客文章中,我将不再重复这些好处。

    取而代之的是,我将描述为什么我更喜欢构建器模式而不是伸缩构造器模式和Javabeans模式的三个其他原因。

    1.帮助您进行更好的设计

    使用伸缩构造函数模式或Javabeans模式意味着必须在创建实际对象之前创建所创建对象的属性。

    这可能是问题,也可能不是问题。

    如果使用外部服务获取创建的对象的属性,则不会有问题。 但是,如果属性是在创建“目标”对象的方法中创建的,则会出现问题。

    在后一种情况下,创建的对象的生命周期通常绑定到“目标”对象的生命周期。

    在这种情况下,构建器模式可以帮助您使用称为聚合的域驱动设计(DDD)模式。 Martin Fowler指定聚合模式如下:

    DDD聚合是域对象的群集,可以将它们视为一个单元。 一个示例可能是订单及其订单项,它们将是单独的对象,但是将订单(连同其订单项)视为一个单独的集合很有用。

    构建器模式可以帮助您以将域模型划分为聚合的方式来设计代码。 这意味着属于聚合的所有对象都是由聚合根对象(订单)创建的,并且只能通过聚合根对象进行访问。

    这将构造关系与逻辑关系移到它所属的地方。

    2.让你思考

    以传统方式编写代码很容易,因为您无需思考。 您所要做的就是编写将信息从一个地方复制到另一个地方的代码。 可能要花一些时间,但这对您来说不是问题,因为您处于舒适区。

    也许您只是想处理代码而不考虑自己在做什么。

    我不是那样的人(你也不应该那样)。

    构建器模式迫使您考虑对象。 更具体地说,它迫使您考虑以下事项:

    • 您必须找出对象的必需和可选属性。
    • 您必须确定将生命周期绑定到所创建对象的生命周期的属性,并设计构建器,以便其强调这一点。
    • 您必须确定在创建对象后不能更新哪些属性(并将这些属性标记为最终属性)。
    • 您必须决定可以更新哪些属性,并找到更新它们的最佳方法。

    找到这些问题的答案有助于您编写更好的代码。 我可以保证,如果您花时间找到这些问题的答案,您的代码将比自动驾驶仪上编写的代码好得多。

    3.它帮助您创建特定于域的语言

    如果使用伸缩构造器模式或Javabeans模式创建新对象,则很难在代码中添加业务含义。 您可以按照以下原则尝试改善情况:

    • 您可以向构造函数参数添加业务含义的唯一方法是以适当的方式命名参数。 这很难做到,即使您做对了,结果也不是最佳的。
    • 如果使用设置器,则当然可以用一种添加设置器方法的方式来命名它们。 但是,您有多少次看到以该原理命名的setter方法?

    在100个对象中,有99个创建的对象只是没有意义的对象。 他们保存数据。 就这些。

    使用构建器模式时,可以通过命名构建器类的方法来创建用于创建新对象的域特定语言(DSL) 这可以帮助您在创建新对象的代码中添加业务含义。

    这就提出了一个问题:如何更新对象的属性?

    当然,您可能会很无聊,并使用setter方法来更新对象的各个属性。 但是您也可以做一些完全不同的事情。

    您可以将这些属性分组为有意义的组,而不用更新单个属性,并且可以通过一种方法更新这些属性的值。 如果正确命名此方法,则可以创建DSL来更新现有对象的信息。

    这不是银弹

    布雷克•考德威尔(Blake Caldwell)表示, 对于构造器来说,构造器模式本质上不太容易出错 我同意他的观点。

    当您开始使用构建器模式时,首先要注意的是创建新对象的代码更易于编写和阅读。 但是,一段时间后,您可能还会注意到其他好处。 我知道我做到了。

    但是,重要的是要了解构建器模式不是灵丹妙药

    我认为, 没有人会因为一种最佳实践而遵循最佳实践 这也适用于构建器模式。

    如果您的对象只有几个构造函数参数,则使用构建器模式没有任何意义。 但是,由于此博客文章(和Effective Java)中所述的好处,您每次必须创建新对象时都应考虑使用构建器模式。


    翻译自: https://www.javacodegeeks.com/2014/02/three-reasons-why-i-like-the-builder-pattern.html

    构建器模式

    展开全文
  • 这一款构建21世纪企业运作管理的新模式专为客户需求而设计,随着内外环境变化而变化,欢迎大家下载构建2...该文档为构建21世纪企业运作管理的新模式,是一份很不错的参考资料,具有较高参考价值,感兴趣的可以下载看...
  • 阿里巴巴首次对外公布了与警方联合破获的莆田系列假鞋案。在阿里大数据的协助下,莆田警方成功突击4家黑鞋厂,查抄假鞋案值上千万元。...这一系列行动折射出我们正在构建新型的打假模式。众所周知,很多厂商山寨严...

    阿里巴巴首次对外公布了与警方联合破获的莆田系列假鞋案。在阿里大数据的协助下,莆田警方成功突击4家黑鞋厂,查抄假鞋案值上千万元。此外,阿里巴巴平台治理部还与莆田市公安局签署合作备忘录,将在食药、母婴、汽配、鞋服、家电等领域展开深入合作,联动信息,打击制假贩假。(5月18日《京华时报》)

    这一系列行动折射出我们正在构建新型的打假模式。众所周知,很多厂商山寨严重,对知识产权不够尊重。很多造假者道德沦丧,假货渗透到线上线下。这些假货严重侵害了消费者的权益,也给我国企业带来了负面影响。如今的假货链条很长,往往是打了上家还有下家,关闭了网店,却难以消灭造假的窝点。如何对这些假货进行釜底抽薪式的处理,不仅令很多国际大品牌头疼,也让相关部门头疼。在社会压力的倒逼之下,伴随着阿里打假的长时间摸索,协作与大数据打假的模式渐渐凸显出了实力。通过大数据和各部门的协作,打假正在将造假链条连根拔起。

    当然了,打假是复杂的,尽管阿里已经实现了“线上追踪”“线下定位”“权利人共建”“24小时全年无休”的四维打假模式。但其想取得应有的效果,必须靠社会舆论和企业的进一步支持,更需要政府相关部门的积极协作。比如,在国际打假方面,打假国际合作化已经刻不容缓,但现实问题是企业很难与其他国家的执法机构合作。对此来说,我国政府有必要借鉴国际合作反腐的机制,建立起国际合作打假机制,企业和数据公司提供线索后,中国政府立即介入,并与其他国家部门合作后续打假。

    本文转自d1net(转载)

    展开全文
  • 大数据供应链 构建工业4.0时代智能物流新模式
  • 煤炭企业的贸易模式改革应当根据中央经济工作会议的指示精神,向着低碳化的方向进行,其模式的重新构建应当在市场经济的基本规律作用之下,以企业的利润最大化作为目标,同时将利润最大化的个体目标同降低碳排放的国家...
  • 现在我们将要学习一种模式——构建模式,这种模式大家想必也遇到过, 比如Android中的AlertDialog.build()这样就会创建出一个AlertDialog的对象实例来。那么为什么我们要用这种模式呢?因为我们创建的对象有...

    只有你学会把自己已有的成绩都归零,才能腾出空间去接纳更多的新东西,如此才能使自己不断的超越自己。

    现在我们将要学习一种新的模式——构建者模式,这种模式大家想必也遇到过,
    比如Android中的AlertDialog.build()这样就会创建出一个AlertDialog的对象实例来。那么为什么我们要用这种模式呢?因为我们创建的对象有可能很复杂,有大量的组成部分,但是我们想在创建的过程中对外隐藏一些细节,我们就可以用builder模式来创建了。

    举个例子,比如,我们的手机,有很多的型号,但是制造它的时候工作量是很大的,有软件,硬件等各种复杂的东西在里面,这时候我们就可以用构建模式来隐藏里面的细节,而只是简单的完成。

    定义:
    将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以让不构建对象来构建。

    现在我们就来写一个构建模式出来!例子就举上面的例子,制造一部手机:

    来看一下我们的手机类:

    public abstract class Phone {
        private String name;//品牌
        private String Os;//操作系统
        private String screen; //显示屏幕
    
        public Phone(String name, String os, String screen) {
            this.name = name;
            Os = os;
            this.screen = screen;
        }
    
        public Phone() {
    
        }
    
        public void setName() {
            System.out.println("名字已经设置");
        }
    
    
        public abstract void setOs();
    
    
        public void setScreen() {
            System.out.println("显示器已经设置");
        }
    
        @Override
        public String toString() {
            return "Phone{" +
                    "name='" + name + '\'' +
                    ", Os='" + Os + '\'' +
                    ", screen='" + screen + '\'' +
                    '}';
        }
    

    然后我们继承我们的Phone来实现一个Android手机:

    public class AndroidPhone extends Phone{
    
        @Override
        public void setOs() {
            System.out.println("操作系统为Andorid");
        }
    }

    好了,就如上面的过程,有设置名称,系统和屏幕,那么我们的Builder作为一个构建者,那么也会有这么多功能,好了,我们先来写一下这个Builder抽象接口

    public interface  BuilderInterface {
        public BuilderInterface  setName();
        public BuilderInterface  setOs();
        public BuilderInterface  setScreen();
    }

    然后我们来实现自己的buildler:

    public class PhoneBuilder implements BuilderInterface{
    
        Phone phone = new AndroidPhone();
    
        public PhoneBuilder(Phone phone){
            this.phone = phone;
        }
    
        @Override
        public BuilderInterface  setName() {
            phone.setName();
            return  this;
        }
    
        @Override
        public BuilderInterface  setOs() {
            phone.setOs();
            return  this;
        }
    
    
        @Override
        public BuilderInterface  setScreen() {
            phone.setScreen();
            return this;
        }
    }

    有没有注意到呢,我的set方法都返回了一个builder对象,其实现在大部分的builder都是这么做的,创建后可以连续的设置出来,好了,我们的Builder对象也已经创建好了,那么我们来看下主代码:

    public class Main {
    
        public static void main(String[] args) {
            Phone phone = new AndroidPhone();
            PhoneBuilder phoneBuilder = new PhoneBuilder(phone);
            phoneBuilder.setScreen().setOs().setName();
        }
    }

    Ok,builder模式就写好了,到这里,你有没有觉得这种模式和代理模式和像?是的,是很像,其实模式之间都有很多的相似之处,都说学设计模式你不需要知道这是什么设计模式,只要知道你写出来的代码符合这种模式,这心中有剑的境界应该是最高境界了。

    好了,builder模式还是挺简单的,代码就不上传了,来张美图,休息一下!
    休息一下

    展开全文
  • 工业云平台的构建与服务新模式研究 摘要工业云平台是互联网信息技术与工业经济发展高度融合的产物全球经济新形势下如何构建工业云平台促进我国工业经济的高度发展是十分必要的文章以工业云平台构建作为切入点提出...
  • 5. 原型模式(面试)介绍原型模式虽然是创建型的模式, 但是与工厂模式没有关系, 从名字既可看出, 该模式的思想就是将一个对象作为原型, 对其进行复制, 克隆, 产生一个和原对象类似的...

    5. 原型模式(面试)

    介绍

    原型模式虽然是创建型的模式, 但是与工厂模式没有关系, 从名字既可看出, 该模式的思想就是将一个对象作为原型, 对其进行复制, 克隆, 产生一个和原对象类似的新对象

    示例

    • 先创建一个原型类

     public class Prototype implements Cloneable {
         public Object clone() throws CloneNotSupportedException {
             Prototype proto = (Prototype) super.clone();
             return proto;
         }
     }

    很简单, 一个原型类, 只需要实现Cloneable接口, 复写clone方法, 此处clone方法可以改成任意的名称, 因为Cloneable接口是一个空接口, 你可以任意定义实现类的方法名, 如cloneA或者cloneB, 因为此处的重点是super.clone()这句话, super.clone()调用的Object的clone()方法, 而在Object类中, clone()是native的, 具体怎么实现, 此处不再深究

    在这里, 我将结合对象的浅复制和深复制说一下, 首先需要了解对象深浅复制的概念:

    • 浅复制:将一个对象复制后, 基本数据类型的变量都会重新创建, 而引用类型, 指向的还是原对象所指向的。

    • 深复制:将一个对象复制后, 不论是基本数据类型还是引用类型, 都是重新创建的, 简单来说, 就是深复制进行了完全彻底的复制, 而浅复制不彻底

    • 写一个深浅复制的例子

     public class Prototype implements Cloneable, Serializable {
         private static final long serialVersionUID = 1L;
         private String string;
         private SerializableObject obj;
         
         // 浅复制
         public Object clone() throws CloneNotSupportedException {
             Prototype proto = (Prototype) super.clone();
             return proto;
         }
         
         // 深复制
         public Object deepClone() throws IOException, ClassNotFoundException {
             // 写入当前对象的二进制流
             ByteArrayOutputStream bos = new ByteArrayOutputStream();
             ObjectOutputStream oos = new ObjectOutputStream(bos);
             oos.writeObject(this);
             // 读出二进制流产生的新对象
             ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
             ObjectInputStream ois = new ObjectInputStream(bis);
             return ois.readObject();
         }
         
         public String getString() {
             return string;
         }
         public void setString(String string) {
             this.string = string;
         }
         public SerializableObject getObj() {
             return obj;
         }
         public void setObject(SerializableObject obj) {
             this.obj = obj;
         }
         
     }
     
     class SerializableObject implements Serializable  {
         private static final long serialVersionUID = 1L;
         
     }

    6. 构建者模式

    介绍

    建造者模式的定义是:将一个复杂的对象的构造与它的表示分离, 使同样的构建过程可以创建不同的表示, 这样的设计模式被称为建造者模式。

    建造者模式的角色定义, 在建造者模式中存在以下4个角色:

    1. builder: 为创建一个产品对象的各个部件指定抽象接口

    2. ConcreteBuilder: 实现Builder的接口以构造和装配该产品的各个部件, 定义并明确它所创建的表示, 并提供一个检索产品的接口。

    3. Director: 构造一个使用Builder接口的对象

    4. Product: 表示被构造的复杂对象, ConcreteBuilder创建该产品的内部表示并定义它的转配过程, 包含定义组成部件的类, 包括将这些部件装配成最终产品的接口

    工厂模式和构建模式的区别

    构建者模式和工厂模式很类似, 区别在于构建者模式是一种个性产品的创建, 而工厂模式是一种标准化的产品创建

    • 导演类:按照一定的顺序或者一定的需求去组装一个产品

    • 构造者类:提供对产品的不同个性化定制, 最终创建出产品

    • 产品类:最终的产品

    示例

    • 构建者

     // 构建者
     public class StudentBuilder {
         // 需要的构建对象
         private Student student = new Student();
         
         public StudentBuilder id(int id) {
             student.setId(id);
             return this;
         }
         public StudentBuilder name(String name) {
             student.setName(name);
             return this;
         }
         public StudentBuilder age(int age) {
             student.setAge(age);
             return age;
         }
         public StudentBuilder father(String fatherName) {
             Father father = new Father();
             father.setName(fatherName);
             student.setFather(father);
             return this;
         }
         // 构建对象
         public Student build() {
             return student;
         }
         
     }
    • 导演类

     // 导演类/ 测试类
     public class BuildDemo {
         public static void main(String[] args) {
             StudentBuilder builder = new StudentBuilder();
             // 如何创建一个Student
             Student student = builder.age(1).name("zhangsan").father("zhaosi").build();
             System.out.println(student);
         }
     }
    展开全文
  • 浅析中国高校新型创业教育模式构建,闻学臣,,大学生创业是当今世界发展的一大潮流,尤其在美国等发达国家,大学生创业已经成为正常现象,与之相应的创业教育也在世界范围内引
  • 针对科研院所提供单一技术咨询服务项目为主的煤炭企业与科研院所合作模式存在的弊端,创建了适合煤矿井下各种灾害防治的产学研合作创新模式——煤矿安全专业化技术服务新模式,并建立了适合该模式的运行体系。...
  • 提出了一种的过程模式构建和多模式监测框架。 为了识别过程模式,该框架利用了一种聚类方法,该方法由整体移动窗口策略以及整体聚类解决方案策略组成。 一种的独立于k的成分分析-主要成分分析(k-ICA-PCA)建模...
  • 随着载运工具智能化和基础设施智能化发展以及移动通信网络的普及,基于车路协同的一代智能交通系统,将实现车车、车路信息的实时交互,构建出新的出行模式,使出行更安全、驾驶体验更舒适。V2X将实现人与车、车与...
  • 教学模式是教学论探讨中的一个热门话题,也是加强体育课程建设,进一步提高大学体育...本研究就是以世纪大学体育教学改革为背景,重点论述如何改变传统落后的大学体育教学模式,并在大学体育课实践中构建新型教学模式.
  • Java构建模式

    千次阅读 2014-08-19 20:05:34
    构建模式只适用于需要传入很多种情况参数的时候,比如大于4种参数的配合,才比较划算。 而且值得注意的是:最好在类的设计之初就考虑是否使用构建器,否则日后扩展起来新构建器旧构造器一起用维护起来不方便。
  • 通过对比国内外高校新模式的健美操课程资源,结合我院的实际情况,提出高校健美操课程资源切实可行的整合思路,力求在目前单一陈旧的健美操教学中创造富于活力的新教学模式,把健美操这项极能吸引人和极能鼓动人的体育课...
  • 通过调查分析,总结当前经验,提出新形势下大学生心理健康教育的新模式,即针对学生特点实施心理健康教育,把心理健康教育渗透于课堂教学的部分情境之中;建立高素质、专兼职结合的师资队伍;建立大学生心理健康教育...
  • 根据国家教育部《现代职业教育体系建设规划》要求,通过对建筑施工技能型人才内涵的理解,借鉴国外高等职业教育思想和培养模式,结合现代社会企业对建筑施工高端技能型人才...构建建筑施工高端技能型人才培养的新模式
  • 大学时期是通过阅读获取知识信息的重要人生阶段。...面对当前大学生阅读行为的诸多问题,如何引导阅读,已经成为高校教育必不可少的部分,同时基于现代阅读开放、多样等特点,也呼唤尽快构建导读新模式
  • 受传统教育模式的影响,普通高校篮球专项课还是以提高学生的专项竞技能力进行,以致高分低能...因此,教师要转变角色,确立的教学观,以教学目标的设立、教学内容的完善、教学方法的选择为前提,创建的教学模式
  • 在公安工作中,采用物联网技术的业务系统已率先应用于证件防伪、安全控制、交通管控、生产管理和供应链管...
  • 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,是通过使用一个共同的接口来指向创建的对象。 例如:您需要一辆汽车,可以直接从工厂里面提货,而不用去管这辆汽车是怎么做出来的,以及这个汽车里面的...
  • 腾讯直播如何构建私域流量卖货新模式_ 女子刀法轻分享02.pdf
  • 读者服务新模式:阅读干预、阅读评价及阅读认证体系的构建,张艳,,五年制高等职业技术学校图书馆的利用率及学生的到馆率、阅读率一直偏低,五年制高职学生的阅读意识、习惯、能力等一直处于低水平
  • building--构建模式

    2017-02-17 11:48:33
    又到一个模式了,坚持三两天一个模式吧。好了, 不多扯这没用的了,正式来学习我们的构建模式。 1、使用场景: 我觉得是在其它类中不关心构建过程,在初始化之前或在初始化时需要大量设置、调用属性或方法时...
  • 有三种方法可以用Java编程语言创建对象: 伸缩构造函数(反)模式 Javabeans模式 建造者模式 与其他两种方法相比,我更喜欢使用构建模式。... 取而代之的是,我将描述为什么我更喜欢构建模式而...
  • 被动MVC模式 用于构建android应用程序的新颖模式,渴望捕获所有事物......

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 7,715
精华内容 3,086
关键字:

构建新模式