
设计模式
代码痴汉
这个作者很懒,什么都没留下…
展开
-
设计模式-简单工厂模式
概念:多态问题中如何取去实例化对象的问题,到底要实例化谁,将来会不会增加实例化对象,这是很容易变化的地方,应该考虑用一个单独的类来做这个创造实例的过程,这就是工厂原创 2017-09-09 14:10:37 · 196 阅读 · 0 评论 -
设计模式-观察者模式
观察者模式观察者模式:定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生变化时,会通知所有的观察者对象,使它们能够自动更新自己。观察者模式结构图 github(observer包)地址:点击这里原创 2017-11-25 14:41:03 · 212 阅读 · 0 评论 -
设计模式-适配器模式
适配器模式:将一个类的接口转换成客户希望的另外一个接口。使得原来由于接口不兼容而不能一起工作的那些类可以一起工作。原创 2017-12-04 18:56:15 · 189 阅读 · 0 评论 -
设计模式-备忘录模式
概念:在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态。这样以后就可将该对象恢复到原先保存的状态。结构图:Originator(发起人): 负责创建一个备忘录Memeto,用以记录当前时刻它的内部状态,并可使用备忘录恢复内部状态。Originator可根据需要决定Memento存储Originator的那些内部状态。Memento(备忘录):负责存储Originator原创 2017-12-11 16:35:34 · 196 阅读 · 0 评论 -
设计模式-状态模式
状态模式,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。原创 2017-11-29 18:35:23 · 193 阅读 · 0 评论 -
设计模式-抽象工厂模式
抽象工厂模式(Abstract Factory),提供了一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。github(abstractFactory包):https://github.com/lieyanhaipo/design-pattern.git原创 2017-11-29 17:13:50 · 198 阅读 · 0 评论 -
设计模式-建造者模式
建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。如果使用了建造者模式,那么用户就只需指定需要建造的类型就可以得到它们,而具体建造的过程和细节就不需要知道了。建造者模式是在当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时适用的模式。代码托管地址(builder包):https://github.com/lieyanhaipo原创 2017-11-10 15:11:56 · 232 阅读 · 0 评论 -
设计模式-外观模式
概念:外观模式为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。应用场景:增加外观Facade可以提供一个简单的接口,减少它们之间的依赖。让新系统与Facade对象交互,Facade与遗留代码交互复杂的工作。github代码托管(facade包):https://github.com/lieyanhaipo/des原创 2017-11-09 16:15:35 · 184 阅读 · 0 评论 -
设计模式-迪米特法则
迪米特法则也叫最少知识原则。如果两个类不必彼此直接通信,这两个类就不应当发生直接的相互作用。如果其中的一个类需要调用另一个类的方法,可以通过第三方转发这个调用。在类的结构设计上,每一个类都应当尽量降低成员的访问权限。强调类之间的松耦合,耦合越弱,越有利于复用,一个弱耦合的类被修改,不会对相关的类造成波及。原创 2017-11-08 12:31:35 · 264 阅读 · 0 评论 -
设计模式-模板方法模式
概念:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构既可重定义该算法的某些特定步骤。github代码托管(templateMethod包 ):https://github.com/lieyanhaipo/design-pattern.git原创 2017-11-08 12:12:28 · 229 阅读 · 0 评论 -
由原型模式引发的浅拷贝和深拷贝
浅拷贝:浅拷贝拷贝的是引用,被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用都仍然指向原来的对象。在java中实现Cloneable接口,调用clone方法,则是浅拷贝,原型模式实现的就是浅拷贝深拷贝:拷贝的是真实的数值或对象,把要复制的对象所引用的对象都复制一遍,把引用对象的变量指向复制过的新对象,而不是原有的被引用的对象。原创 2017-11-08 11:16:12 · 525 阅读 · 0 评论 -
设计模式-工厂方法
工厂方法模式(Factory Method),定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。工厂方法模式和简单工厂的区别:简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。工厂方法克服了简单工厂违背开放-封闭原则的缺点,又保持了封装对象创建过程的优点。原创 2017-10-18 09:39:55 · 211 阅读 · 0 评论 -
设计模式-代理模式
代理模式(Proxy),为其他对象提供一种代理以控制对这个对象的访问。代理模式应用:1.远程代理:也就是为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。2.虚拟代理:根据需要创建开销很大的对象。通过它来存放实例化需要很长时间的真实对象。3.安全代理:用来控制真实对象访问时的权限。4.智能引用:当调用真实对象时,代理处理另外一些事。原创 2017-10-17 19:52:00 · 186 阅读 · 0 评论 -
设计模式-装饰模式
装饰模式:动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活。Component 是定义一个对象接口,可以给这些对象动态地添加职责。ConcreteComponent是定义了一个具体的对象,也可以给这个对象添加一些职责。Decorator,装饰抽象类,继承了Component,从外类来扩展Component类的功能,但对于Component来说,是无需知道D原创 2017-09-29 15:39:49 · 261 阅读 · 0 评论 -
设计模式-依赖倒转原则
依赖倒转原则:原话解释是抽象不应该依赖细节 ,细节应该依赖于抽象,说白了就是要针对接口编程,不要对实现编程。A.高层模块不应该依赖底层模块,两个都应该依赖抽象B.抽象不应该依赖细节。细节应该依赖抽象里氏代换原则:一个软件实体如果使用的是一个父类的话,那么一定适用于其子类,而且它察觉不出父类对象和子类对象的区别。也就是说,在软件里,把父类都替换成它的子类,程序的行为没有变化。原创 2017-09-20 17:30:29 · 246 阅读 · 0 评论 -
设计模式-开放封闭原则
概念:在软件设计模式中,这种不能修改,但可以扩展的思想就是开放-封闭原则。是说软件实体(类、模块、函数等)应该是可以扩展,但是不可以修改。这样才能面对需求的改变以保持相对稳定,从而使得系统可以在第一个版本以后不断推出新的版本。原创 2017-09-19 15:54:30 · 428 阅读 · 0 评论 -
设计模式-单一职责原则
概念:就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合在一起,一个职责的变化可能会削弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当变化发生时,设计会遭受到意想不到的破坏。编程时我们要在类的职责分离上多思考,做到单一职责,这样你写的代码才是真正的易维护、易扩展、易复用,灵活多样。原创 2017-09-19 15:21:38 · 275 阅读 · 0 评论 -
设计模式-策略模式
概念:策略模式定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化,不会影响到使用算法的客户。从概念上看,所有这些算法完成的都是相同的工作,只是实现不同,它可以以相同的方式调用所有的算法,减少了各种算法类与使用算法之间的耦合。注:Strategy类层次为Context定义了一系列的可供重用的算法或行为。继承有助于析取出这些算法中的公共功能。原创 2017-09-19 14:20:31 · 291 阅读 · 0 评论 -
设计模式-原型模式
原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式其实就是从一个对象再创建另外一个可定制对象,而且不需要知道任何创建的细节。原创 2017-10-18 11:34:26 · 209 阅读 · 0 评论