b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

24种设计模式及案例(2)

电脑杂谈  发布时间:2019-07-05 13:10:48  来源:网络整理

五、prototype,原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型来创建新的对象。原型模式prototype:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。工厂模式 虽然object构造函数或对象字面量都可以用来创建单个对象,但这些方式有个明显的缺点:使用同一个接口创建很多对象,会产生大量的重复代码.为解决这个问题,人们开始使用工厂模式的一种变体.function cr ...。

nsuserdefaults 提供了一个与默认设置交互的接口. 这些默认设置允许一个 app 为每一个单独的用户的设置提供定制化的行为. 数据的同步 我们可以通过 nsuserdefaults 对象在运行时从读取用户的数据, 并添加到缓存中. 在我们正常获取或者设置 nsuserdefaults 的值时, 和缓存中的数据其实并没有同步更新, 因为这样...。这样一来,通过原型实例创建新的对象,就不再需要关心这个实例本身的类型,只要实现了克隆自身的方法,就可以通过这个方法来获取新的对象,而无须再去通过new来创建。补充:设计模式中的创建型模式中也有一个原型模式,原型模式也是一个常用的模式,例如做一个室内设计软件,所有的素材都在工具箱中,而每次从工具箱中取出的都是素材对象的一个原型,可以通过对象克隆来实现原型模式。

移动设计模式库_库模式是什么_移动设备如何使用boost库

意图:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。

主要解决:在运行期建立和删除原型。

使用静态工厂方法创建bean实例时,class属性也必须指定,但此时class属性并不是指定bean实例的实现类,而是静态工厂类,spring通过该属性知道由哪个工厂类来创建bean实例。它有多个抽象产品类,每个抽象产品类可以派生出多个具体产品类,一个抽象工厂类,可以派生出多个具体工厂类,每个具体工厂类可以创建多个具体产品类的实例。而为什么这些映射要放在模块线程状态而不放程状态或模块状态是很明显的——这些包装类包装的句柄都是和线程相关的(如hwnd只有创建它的线程才能接收其消息)且这个模块中的包装类对象可能不同于另一个模块的(如包装类是某个dll中专门派生的一个类,如a.dll中定义的cabutton的实例和b.dll中定义的cbbutton的实例如果同时在一个线程中。

如何解决:利用已有的一个原型对象,快速地生成和原型对象一样的实例。

关键代码: 1、实现克隆操作,在 JAVA 继承 Cloneable,重写 clone(),在 .NET 中可以使用 Object 类的 MemberwiseClone() 方法来实现对象的浅拷贝或通过序列化的方式来实现深拷贝。 2、原型模式同样用于隔离类对象的使用者和具体类型(易变类)之间的耦合关系,它同样要求这些"易变类"拥有稳定的接口。

应用实例: 1、细胞分裂。 2、JAVA 中的 Object clone() 方法。

优点: 1、性能提高。 2、逃避构造函数的约束。

缺点: 1、配备克隆方法需要对类的功能进行通盘考虑,这对于全新的类不是很难,但对于已有的类不一定很容易,特别当一个类引用不支持串行化的间接对象,或者引用含有循环结构的时候。 2、必须实现 Cloneable 接口。

使用场景: 1、资源优化场景。 2、类初始化需要消化非常多的资源,这个资源包括数据、硬件资源等。 3、性能和安全要求的场景。 4、通过 new 产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。 5、一个对象多个修改者的场景。 6、一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式拷贝多个对象供调用者使用。 7、在实际项目中,原型模式很少单独出现,一般是和工厂方法模式一起出现,通过 clone 的方法创建一个对象,然后由工厂方法提供给调用者。原型模式已经与 Java 融为浑然一体,大家可以随手拿来使用。

copy.copy()返回了你的对象的一个浅拷贝——这意味着,当实例本身是一个新实例时,它的所有数据都被引用了——例如,当一个对象本身被复制了,它的数据仍然是被引用的(因此,对于浅拷贝中数据的更改仍然可能导致数据在原始对象的中的改变)。所以实例对象的 constructor 是继承来的,这一点要注意,如果利用原型链继承,constructor 将有可能指向原型对象的构造函数甚至更上层的构造函数,其他重写构造函数 prototype 的行为也会造成 constructor 指向问题,都需要重设 constructor),构造函数的 prototype 指向对应的原型对象,实例对象的 __proto__ 指对应的原型对象,__proto__是浏览器的实现,并没有出现在标准中,可以用 constructor.prototype 代替。上边的代码中,证明两个实例都沿用了同一个prototypesh原型链 中的eat方法,当修改原型对象的eat方法时,两个实例都发生改变,这是因为对象实例本身没有eat方法,都是读取的原型对象中的方法。

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

这种模式涉及到一个单一的类,该类负责加入独立的或不兼容的接口功能。举个真实的例子,读卡器是作为内存卡和笔记本之间的适配器。您将内存卡插入读卡器,再将读卡器插入笔记本,这样就可以通过笔记本来读取内存卡。

另外,v7.10.1.0版本的nero express还具备制作jukebox音频光盘的功能,可以将mp3文件、wma文件等音频文件制作成一张jukebox音频cd/dvd,可以在任何支持mp3、wma或aac文件播放的电脑或播放机中进行播放。也可以直接使用这些软件播放hdtv(图4),以.wmv文件将会有4g以上,还有少数文件后缀为.ts文件能达到8g以上.tp和.yonsm.tp和,只要系统安装了windows media player 9 或更高版本,目前最新的版本为2.wmv是完全一样的,因为文件中分别包含有ac3音频信息和mpeg-2视频信息.php.ts为后缀的视频流文件(图2).net/read,一些播放软件的最新版本已经开始支持wmv-hd,一类是经过wmv-hd(windows media video high definition)标准压缩过的。mp3剪切器支持无损剪切mp3等音频,剪切后音质不变mp3剪切器支持各种mp3,wav,aac等音频的串烧,可以把多个mp3,wav, aac等音频文件合并成一个文件使用mp3剪切合并大师,就可以把一首歌的中间部分去除,也可以把多段连接在一起,这是其他mp3剪切软件做不到的支持各种mp3,wav,aac等音频的串烧,可以把多个mp3,wav, aac等音频文件合并成一个文件12.2版本修复了不能合并mp3文件的问题。

意图:将一个类的接口转换成客户希望的另外一个接口。适配器模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。

主要解决:主要解决在软件系统中,常常要将一些"现存的对象"放到新的环境中,而新环境要求的接口是现对象不能满足的。

何时使用: 1、系统需要使用现有的类,而此类的接口不符合系统的需要。 2、想要建立一个可以重复使用的类,用于与一些彼此之间没有太大关联的一些类,包括一些可能在将来引进的类一起工作,这些源类不一定有一致的接口。 3、通过接口转换,将一个类插入另一个类系中。(比如老虎和飞禽,现在多了一个飞虎,在不增加实体的需求下,增加一个适配器,在里面包容一个虎对象,实现飞的接口。)

如何解决:继承或依赖(推荐)。

关键代码:适配器继承或依赖已有的对象,实现想要的目标接口。

<电器控制与可编程控制器应用技术>同时介绍电器控制与可编程序控制器应用,共分三篇7章,第一篇共2章,介绍了低压电器基本知识,电器控制中的电气工程图及分析方法,常用电器控制电路及所使用电器的工作原理,电器元件的选用.接线方法和电路的检测方法.第二篇共4章,介绍了fx系列可编程序控制器的基本单元及其指令系统和应用:第三篇共1章,介绍了可编程序控制器的扩展模块,包括a-d.d.a模块.适配器及其应用. 本教材强调通过项目训练来强化对fx系列及其控制系统的理解和应用,共安排了29个实训项目,具有由浅入。而早前oppo就已经公布oppo r15将适配应用市场大部分的应用,coloros 5.0首先针对大部分主流应用进行了全面屏适配,能够最大程度地让用户感受到视觉上的震撼,不用担心软件的适配问题。上海城建设施运营数据中心提供多种数据访问、应用、呈现方式适配接口,实现了多平台、多接口、多形式的应用方式,大大提高了设施运营信息的展现、分享、应用,也提高了后续系统升级、改造的可行性、灵活性。

在将迪米特法则运用到系统设计中时,要注意下面的几点:在类的划分上,应当尽量创建松耦合的类,类之间的耦合度越低,就越有利于复用,一个处在松耦合中的类一旦被修改,不会对关联的类造成太大波及。其中,关联关系根据其关联的强度又可以进一步划分为关联、聚合和合成,但说白了都是has-a关系,合成聚合复用原则想表达的是优先考虑has-a关系而不是is-a关系复用代码,原因嘛可以自己从百度上找到一万个理由,需要说明的是,即使在java的api中也有不少滥用继承的例子,例如properties类继承了hashtable类,stack类继承了vector类,这些继承明显就是错误的,更好的做法是在properties类中放置一个hashtable类型的成员并且将其键和值。其中,关联关系根据其关联的强度又可以进一步划分为关联、聚合和合成,但说白了都是has-a关系,合成聚合复用原则想表达的是优先考虑has-a关系而不是is-a关系复用代码,原因嘛可以自己从百度上找到一万个理由,需要说明的是,即使在java的api中也有不少滥用继承的例子,例如properties类继承了hashtable类,stack类继承了vector类,这些继承明显就是错误的,更好的做法是在properties类中放置一个hashtable类型的成员并且将其键和值都设置为字符串来存储数据,而stack类的设计也应该是在stack类中放一个vector对象来存储数据。

接口是抽象类的延伸,java了保证数据安全是不能多重继承的,也就是说继承只能存在一个父类,但是接口不同,一个类可以同时实现多个接口,不管这些接口之间有没有关系,所以接口弥补了抽象类不能多重继承的缺陷,但是推荐继承和接口共同使用,因为这样既可以保证数据安全性又可以实现多重继承。接口并不能去继承一个类,而类可以继承接口 (接口只能继承于接口,而类既可以继承接口,也可以继承类)。 但是使用类的方式来实现厂模式还有更多的好处. 其一是: 我们可以管理从 nsisupports 接口派生而来的类厂本身的生存期. 当我们试图把多个类厂划分成一组, 然后确定是否能卸载这一组类厂的时候, 这一点非常重要. 另一个好处是: 类厂可以引入其他需要支持的接口. 在我们后面讨论 nsiclassinfo 接口的时候, 我们会看到某些类厂使用这个接口支持信息查询, 诸如这个对象是用什么语言写的, 对象支持的接口等等. 这种派生自 nsisupports 的 "future-proofing" 特性非常关键.xpidl 与类型库定义接口的简单而强劲的方法是使用接口定义语言 - 这实际上是在一个跨平台而语言无关开发环境下定义接口的需求. xpcom 使用的是源自于 corba omg 接口定义语言的变体, 称为 xpidl, 来定义接口, xpidl 可以定义接口的方法, 属性, 常量, 以及接口继承.采用 xpidl 定义接口还存在一些缺陷. 它不支持多继承, 同时 xpidl 定义的方法名不能相同。

使用场景:有动机地修改一个正常运行的系统的接口,这时应该考虑使用适配器模式。

注意事项:适配器不是在详细设计时添加的,而是解决正在服役的项目的问题。


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/tongxinshuyu/article-110653-2.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...