结构型设计模式
文章平均质量分 63
结构型设计模式
so~what
这个作者很懒,什么都没留下…
展开
-
设计模式之~组合模式
这样做不会出现Leaf做无用功的问题,不过由于不够透明,所以树叶和树枝类将不具有相同的接口,客户端的调用需要做相应的判断,带来了不便。定义了包含基本对象和组合对象的类层次结构。基本对象可以被组合成更复杂的组合对象,而这个组合对象又可以被组合,这样不断的递归下去,客户端代码中,任何用到基本对象的地方都可以使用组合对象。以及你希望用户可以忽略组合对象与单个对象的不同,统一的使用组合结构中的所有对象时,就应该考虑用组合模式了。在使用组合模式时,其叶子和树枝的声明都是实现类,而不是接口,违反了依赖倒置原则。原创 2023-05-31 08:37:31 · 973 阅读 · 0 评论 -
设计模式之~装饰模式
当系统需要新功能时候,是向旧的类中添加新的代码,这些新的代码通常装饰了原有类的核心职责或主要行为,问题是在主类中加入类新的字段、方法和逻辑,从而增加了主类的复杂度,而这些新加入的东西仅仅是为了满足一些只在某种特定情况下才会执行的特殊行为的需要。把类的装饰功能从类中搬移去除,这样可以简化原有的类。简而言之,装饰类和被装饰类可以独立发展,不会相互耦合,装饰模式是继承的一个替代模式,装饰模式可以动态扩展一个实现类的功能。动态地给一个对象添加一些额外的职能,就增加功能来说,装饰模式比生成子类更为灵活。原创 2023-05-31 08:36:15 · 286 阅读 · 0 评论 -
设计模式之~享元模式
也就是说,享元模式Flyweight执行时所需要的状态是有内部的也可能有外部的,内部状态存储于ConcreteFlyweigt对象之中,而外部对象则应该考虑由客户端对象存储或计算,当调用Flyweight对象的操作时,将该状态传递给它。还有就是对象的大多数状态可以外部状态,如果删除对象的外部状态,那么可以用相对较少的共享对象取代很多组对象,此时可以考虑使用享元模式。享元模式的主要目的: 是实现对象的共享,即共享池,当系统中对象多的时候可以减少内存的开销,通常与工厂模式一起使用。需要关注线程安全性问题。原创 2023-05-31 08:36:01 · 605 阅读 · 0 评论 -
设计模式之~外观模式
为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。有些方法是对系统外的,有些方法是系统内部使用的。比如经典的三层架构,就需要考虑在数据访问层和业务逻辑层、业务逻辑层和表示层的层与层之间建立外观Facade,这样可以为复杂的子系统提供一个简单的接口,使得耦合大大降低。其次,在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,增加外观Facade可以提供一个简单的接口,减少它们之间的依赖。原创 2023-05-30 21:27:45 · 3429 阅读 · 0 评论 -
设计模式之~适配器模式
比如,明明看到调用的是A接口,其实内部被适配成了B接口的实现,一个系统如果太多出现这种情况,无异于一场灾难。在软件开发中,当系统的数据和行为都正确,但接口不符时,我们应该考虑使用适配器,目的是使控制范围之外的一个原有对象与某个接口匹配。灵活性:某一天,突然不想要适配器,没问题,删除掉这个适配器就可以了,其他的代码都不用修改,基本上就类似一个灵活的构件,想用就用,不想就卸载。更好的扩展性:在实现适配器功能的时候,可以调用自己开发的功能,从而自然地扩展系统的功能。对象适配器模式:本节主要讲对象适配器模式。原创 2023-05-30 21:25:29 · 2984 阅读 · 0 评论 -
设计模式之~桥接模式
这种依赖关系限制了灵活性并最终限制了复用性。桥接模式就是将抽象部分与它的实现部分分离,其实就是实现系统可能有多角度分类,每一种分类都可能变化,那么就把这种多角度分离出来让它们独立变化,减少它们之间的耦合。桥接模式的主要目的是通过组合的方式建立两个类之间的关系,而并不通过继承来实现,桥接模式的核心在于解耦抽象和实现。桥接模式的主要目的是通过组合的方式建立两个类之间的关系,而并不通过继承来实现,桥接模式的核心在于解耦抽象和实现。合成则是一种强的拥有关系,体现了严格的部分和整体的关系,部分和整体的生命周期一样。原创 2023-05-30 21:23:49 · 2181 阅读 · 0 评论 -
设计模式之~代码模式
比如打开一个很大的HTML网页时,里面可能有很多的文字和图片,但你还是可以很快打开它,此时你所看到的是所有的文字,但图片却是一张一张地下载后才能看到。那些未打开的图片框,就是通过虚拟代理来替代了真实的图片,此时代理存储了真实图片的路径和尺寸。如计算真实对象的引用次数,这样当该对象没有引用时,可以自动释放它;或在访问一个实际对象前,检查算法已经锁定它,以确保其他对象不能改变它。代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。,是指当调用真实的对象时,代理处理另外一些事。原创 2023-05-30 21:21:21 · 161 阅读 · 0 评论