设计模式-java/Android
lin-0410
最痛苦的事情,不是失败了,而是我本可以......
所以,如果目标还没去实现,不要感叹为时已晚,因为种一棵树最好的时间是十年前,其次是现在!
展开
-
动态代理设计模式,及实现原理
动态代理模式,前提还是代理模式,只是优化了静态代理的一些不足。比如,静态代理在一对一关系出现时,创建的代理对象较多,代码量也大,可维护性就会稍差,在一对多的代理关系出现是,可扩展性就更差了。而动态代理,就是在使用时,才去创建代理类和实例,这样就可以通过一个动态代理类解决创建多个静态代理的问题,更灵活了。当然动态代理的缺点也是有的,就是相比静态代理直接调用目标对象方法,动态代理效率会低,...原创 2020-01-07 18:53:16 · 262 阅读 · 0 评论 -
常用设计模式
常用设计模式原则、法则:一、单一职责原则:就一个类而言,应该仅有一个引起它变化的原因。如果一个类承担的职责过多,就等于把这些职责耦合到一起,一个职责的变化可能会消弱或抑制这个类完成其他职责的能力。这种耦合会导致脆弱的设计,当发生变化时,设计会遭受到意想不到的破坏。软件设计真正要做的许多内容,就是发现职责并把这些职责相互分离。如果能想到多余一个的动机去改变一个类,那么这个类就有多余一个的原创 2017-06-21 18:39:25 · 224 阅读 · 0 评论 -
设计模式-备忘录模式(Memento)
备忘录模式(Memento),在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,这样以后就可以将该对象恢复到之前保存的状态。Originator(发起人),负责创建一个备忘录Memento,用以记录当前时刻他的内部状态,并可使用备忘录恢复内部状态,Originator可以根据需求决定memento存储Originator的那些内部状态。Memento(备忘原创 2016-04-15 10:31:41 · 393 阅读 · 0 评论 -
设计模式中的几个法则
设计模式中的几个法则,迪米特法则:如果两个类不必彼此直接通信,那么这两个类就不应该发生直接的相互作用。如果其中一个类需要调用另一个类的某一个方法的话,可以借助第三者转发这个调用。迪米特法则强调的前提是在类的结构设计上,每一个类都应该尽量降低成员的访问权限。其根本思想是强调了类之间的松耦合,类之间的耦合越弱,越有利于复用,一个处在弱耦合的类被修改,不会对有关系的类造成波及。依原创 2016-04-11 10:25:40 · 360 阅读 · 0 评论 -
设计模式-状态模式(state)
状态模式(state),当一个对象的内在状态改变时允许改变其行为,这个对象看起啦像是改变了其类。状态模式主要解决的问题是当控制一个对象的状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。如果这个状态判断很简单,就没必要使用状态模式了。State抽象状态类,定义一个接口以封装与context的一个特定状态相关的行为。原创 2016-04-14 14:40:25 · 291 阅读 · 0 评论 -
设计模式-抽象工厂模式(abstract factory)
抽象工厂模式(abstract factory),提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。抽象工厂模式结构图:AbstractProductA,AbstractProductB是两个抽象产品,之所以为抽象,是因为他们都有可能有两种不同的实现,而ProductA1,ProductA2,ProductB1,ProductB2就是对这两个抽象产品的具体分类的实原创 2016-04-14 13:48:28 · 371 阅读 · 0 评论 -
设计模式-观察者模式Observer
观察者模式(Observer),又叫发布订阅模式,定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象,使他们能够自动更新自己。实现代码:Subject类,主题类或抽象通知者类,一般用一个抽象类或接口实现,他把所有对观察者对象的引用保存在一个聚集里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删原创 2016-04-13 16:43:46 · 361 阅读 · 0 评论 -
设计模式-建造者模式(Builder)
建造者模式(Builder),又叫生成器模式,将一个复杂对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式可以将一个产品的内部表象和产品的生成过程分割开来,从而可以是一个建造过程可以生成具有不同内部表象的产品对象。如果我们使用了建造者模式,你们用户就只需要指定需要建造的类型就可以得到他们,而具体建造的过程和细节就不需要知道了。Builder是为创建一个产品对原创 2016-04-13 10:55:02 · 320 阅读 · 0 评论 -
设计模式 外观模式(Facade)
外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。代码实现:四个子系统的类:class SubSystemOne{public void methodOne(){//子系统的方法一}}class SubSystemTwo{public void methodTwo(){原创 2016-04-12 16:55:25 · 348 阅读 · 0 评论 -
设计模式 模板方法模式 TemplateMethod
模板方法模式TemplateMethod,定义一个操作中的算法的骨架,而将一些操作步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。模板方法的结构图:AbstractClass 是抽象类,其实也就是一个抽象模板,定义并实现了一个模板方法,这个模板方法通常是一个具体方法,他给出了一个顶级逻辑的骨架,而逻辑的组成步骤在相应的抽象操作中,推迟到子类原创 2016-04-08 17:07:21 · 400 阅读 · 0 评论 -
设计模式 原型模式 Prototype
原型模式prototype pattern,用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。原型模式的结构图:原型模式其实就是从一个对象再创建另外一个可定制的对象,而且不需要知道任何创建的细节。它采取复制原型对象的方法来创建对象的实例。原型模式的代码:abstract class Prototype{private String id;pub原创 2016-04-08 14:19:36 · 308 阅读 · 0 评论 -
简单工厂模式 java示例
简单工厂模式(simple factory pattern):简单工厂模式属于创建型模式,也叫静态工厂模式,是由一个工厂对象来决定创建哪一种产品类的实例,通过定义一个类来负责创建其他类的实例,被创建的实例通常都有共同的父类。实质是由一个工厂类根据传入的参数,动态决定创建那一个产品类。该模式包含的角色及职责:工厂角色:简单工厂模式的核心,负责实现创建所有实例的内部逻辑,工厂类的创建产品类的方原创 2016-04-01 15:03:57 · 656 阅读 · 0 评论 -
设计模式-策略模式 java实现
如果要做一个商场收银软件,输入商品的数量,单价,计算出收费总额,还要考虑商场的促销形式,比如打8折,满200减30等,先来看下使用简单工厂模式来实现这个需求的示例:package strategy.pattern;//现金收费抽象类public abstract class CashSuper {public abstract double acceptCash(double mo原创 2016-04-05 15:25:11 · 389 阅读 · 0 评论 -
设计模式-装饰模式Decorator JAVA示例
装饰模式Decorator,动态的给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更灵活。下面是装饰模式的结构图:基本的代码实现:abstract class Component{public abstract void operation();}class ConcreteComponent : Component{public override原创 2016-04-06 18:38:23 · 367 阅读 · 0 评论 -
设计模式-代理模式(Proxy) java示例
代理模式(Proxy),为其他对象提供一种代理,以控制对这个对象的访问。代理模式的结构图:Subject类,定义了RealSubject和proxy的公用接口,这样就在任何使用RealSubject的地方都可以使用Proxy。RealSubject类,定义了proxy所代表的真实实体。Proxy类,保存一个引用使得代理可以访问实体,并提供一个与subject的接口相同的接口原创 2016-04-07 14:11:43 · 492 阅读 · 0 评论 -
设计模式 工厂方法模式 factory method
声明:本博客里面设计模式相关的文章,均是学习 《大话设计模式》 的笔记。工厂方法模式factory method,定义一个用于创建对象的接口,让子类决定实例化那一个类。工厂方法是一个类的实例化延迟到了他的子类。前面有篇文章,是以计算器为例来学习简单工厂模式,这里还是以计算器为例,来把简单工厂模式,工厂方法模式放一起做个比较。简单工厂模式的结构图:工厂类的代码写法:cla原创 2016-04-07 15:54:11 · 759 阅读 · 0 评论 -
工厂方法模式的结构
工厂方法模式:就是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中。核心工厂类不在负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的好处是 使得工厂方法模式可以使系统在不修改具体工厂角色的情况下引进新的产品。interface Service{ void methodOne(); void methodTwo();原创 2015-12-08 16:13:38 · 542 阅读 · 0 评论 -
策略模式 java实现
策略模式:创建一个能根据所传递的参数对象的不同,而具有不同行为的方法。StrategyDemo的process()方法可以接受任何类型的Processor,并将其应用到一个object对象上,然后输出。这类方法包含所要执行的算法中固定不变的部分,而策略包含变化的部分。策略就是传递进去的参数对象,它包含要执行的代码。这里Processor对象就是一个策略,在main()中可以看到有3种不同类型的策略用到了String类型的s对象上。原创 2015-12-08 11:26:47 · 604 阅读 · 0 评论