`
Hode
  • 浏览: 27059 次
  • 性别: Icon_minigender_2
  • 来自: 成都
社区版块
存档分类
最新评论
文章列表
享元模式是对于某个对象的共享的模式,譬如String,对于相同内聚属性的对象,系统只生成一个,这样就大大减少了系统的开销。 享元模式分为:抽象享元角色,具体享元,享元工厂,客户端。其中,具体享元是可以被共享的部分。但是客户端不实际生成具体享元,而是由享元工厂生成享元。工厂生产享元的时候,判断该享元是否创建过,从而达到已经创建过,或者存在享元可以不再重复创建就被客户端使用 单纯享元模式和复合享元模式从本质上来说没有区别,只是复合享元模式是单纯享元模式与合成模式的结合,复合享元模式里面的享元可能是树枝,树枝下面的树叶是能够共享的,对于复合享元模式,客户端也是看不见的。这部分内容是在工厂方法内部 ...

门面模式Facade

门面模式应该应用在子系统和子系统之间。门面模式类似于适配器模式,但是门面模式并不包含具体的业务逻辑,门面模式是一个用来减少系统耦合,优化系统架构的接口 门面模式包括门面和子系统两个角色。门面模式提高了子系统的独立性和可移植性。 由于门面模式不包含具体的业务逻辑,这样的好处是子系统内部的逻辑修改了,不影响其他子系统的调用,对其他子系统是透明的。
桥梁模式是将抽象化和实例化脱耦,使两者可以独立变化 我的理解,如果对于一个抽象接口,我们直接用具体的业务逻辑实现之,那么两者是密不可分的。一旦抽象接口发生变化,那么我们实现的具体业务逻辑也必须修改。对 ...

不变模式Immutable

不变模式只涉及一个类,分为弱不变模式和强不变模式。 弱不变模式:对象没有任何方法会修改对象的状态,属性私有,如果引用对象可变则须限制外界对可变对象的访问 强不变模式:所有方法必须是final类型的,保证其和其子类的实例状态都是不可变化的 不变对象:易于维护,线程安全 Java里面的引用:String(强不变模式),封装类(Integer,Long)(强不变模式)
策略模式是对算法的封装,把使用算法和算法本身分开。 策略模式涉及的角色包括:环境,抽象策略,具体策略。 策略模式的精髓在于封装了具体的策略,算法,至于业务逻辑中什么时候运用这些策略和算法则不在其中。 使用策略模式的场景为:a。系统里面有许多类,区别仅仅在于其行为;b。系统需要动态在集中算法里面选择一种;c。系统算法使用的数据不让客户知道;d。对于多重条件语句的优化。 策略模式可以和享元模式一起使用,来达到资源和效率的利用。 策略模式可以简化多重条件语句,管理算法族,可替换继承关系。增加新的算法对原有代码几乎不需要修改。 策略模式在于把行为,算法和具体的对象分离开来。具体的对象调用对 ...
模板方法有抽象模板和具体模板方法组成。抽象模板定义了一个或者多个抽象操作,以便让子类实现,为基本操作。具体模板实现了父类定义的一个或者多个抽象方法,每个抽象模板角色都有其具体模板角色与之对应。换言之,模板方法在抽象类里面定义了一个骨架流程,A,B,C,然后在具体模板方法(子类)里面实现A,B,C 设计的考虑,继承是对象设计的一个考虑,但是滥用继承,和不用继承都是欠妥的。在设计的时候,多从模式的角度处理一些问题可以帮助系统的架构更为健壮。 模板方法中的方法可以分为:模板方法和基本方法两类。 模板方法是指定义在抽象类,把基本操作方法组合在一起形成一个总算法或一个总行为的方法。该方法在抽象类里 ...
观察者模式分为:抽象主题,抽象观察者,具体主题,具体观察者。 主要实现的模式是抽象主题定义对观察者的操作,具体主题管理观察者的一个聚集,并实现相应的操作。观察者是由具体主题调用的。观察者的聚集如果是相同的,则可以放到抽象主题里面。 AWT中的DEM机制(委派事件模型)就是观察者模式的应用。具体的Action作为观察者订阅感兴趣的事件。而当事件触发的时候,事件主题通知所有订阅该事件主题的观察者执行相关的操作。 具体言之,对于界面而言,Frame是主题角色,Listener是观察者角色。注册了Listener,当发生事件的时候,Frame就会调用相应的方法执行。我们实现了Listener接口 ...
责任链模式分为两个角色:抽象处理者,具体处理者。抽象处理者一般是个接口,具体处理者要么处理事务,要么把请求转交给下一个处理者; 单纯的责任链模式,一个处理者要么处理事务,要么把事务传递给下一个处理者。不管怎样,事务总有一个人来执行。对于不纯的责任链模式,可能出现处理者处理一部分事务之后,继续往下传递的情况,事务也有可能直到传递结束,也没有被执行。通常,不纯的责任链模式有更多的应用; AWT事件处理机制,是采用事件浮升的机制实现的。早期的AWT事件处理机制大量采用了继承关系,这样导致类的结构异常复杂,后续被观察者模式取代; 红楼梦击鼓传花,所有的参与游戏者均为具体处理者,继承抽象处理者接口 ...
命令模式把发出命令的责任和执行命令的责任分开,委派给不同的对象; 命令模式角色:客户角色,命令角色,具体命令角色,请求者角色,接收者角色。客户创建具体命令,指派调用者(请求者)执行。请求者调用指派的命令。而命令关联具体的接收者。当请求者调用命令的时候,实际是执行命令里面的方法,而该方法是命令类通过聚合调用具体的接收者执行之。 对于一个收音机系统而言,我们可以引入以下几种角色:收音机,收音机按钮,操作的人。人操作收音机,并指定按钮。当按下具体的按钮的时候,按钮关联与收音机对应的功能。收音机执行这些功能,从而完成一个操作。仔细揣摩,和上述的表述非常接近。 宏命令功能:我们可以增加一个指令集, ...
什么是访问者模式,就是我们通过JAVA的自动类型转换,实现多次转换的模式。 我们如何利用JAVA的特性实现类型的自动转换呢?首先我们看一下访问者模式里面有一下若干角色,访问者(包括抽象和具体访问者),节点(抽象和具体),结构对象。在访问者方法中,我们定义了节点中的方法B调用节点的方法。在节点方法中,我们定义了节点方法A调用访问者方法。这样一来,我们只要调用节点方法A,我们就可以实现动态调用节点方法B的操作。在结构对象中,我们定义一个集合用来放置节点对象。我们在客户端把若干不同的具体节点放入结构对象,并调用节点方法A,由于节点方法A是一个接口方法,这样调用的具体节点对象是什么就对用户透明了。一 ...
解释器模式是针对一些一再发生的问题的解决的一种模式。譬如浏览器。 解释器模式包括以下部分:抽象表达式,具体表达式,客户端,环境。其中,客户端建造了一个抽象语法树,调用解释操作,而能够解释这些语法的部分在表达式中,环境提供了一些全局信息。 系统有一个简单的语言可以解释,可以处理一些重复发生的问题,效率不是主要的考虑。
调停者模式让我们思考一个系统怎样设计,如何设计才更好。调停者模式针对的是一个复杂的系统,而调停者作为一个新对象,专门用户该系统原有对象的解耦合操作。相当于一个工作小组中的组长,专门用于解决组员之间的问题。 调停者模式包括:调停者和同事类角色。同事类,在该模式里面用于实现小范围的业务逻辑。调停者负责向具体的同事类指派工作。从某个角度来看,同事类负责具体的业务逻辑,而调停者承担调用,协调等职责。 从设计的角度来看,一个好的设计应该考虑到一个类应该只处理一件事情,这样我们才能更好的把模式融入日常的代码研发当中去,而模式的引入可以帮助我们更加合理的梳理我们的系统。通过模式,我们可以把调用和具体的业 ...
JButton JButton bt3 = new JButton(); bt3.setText("right"); //设置文本相对于图标的垂直位置 bt3.setVerticalTextPosition(AbstractButton.CENTER); //设置文本相对于图标的水平位置 bt3.setHorizontalTextPosition(AbstractButton.RIGHT); bt3.setMnemonic(KeyEvent.VK_R); bt3.setIcon(new ImageIcon("D:\\Study\ ...
Applet 1. Applet和Swing的顶级容器一样有RootPane,LayeredPane,ContentPane,GlassPane;用户操作也是把组件添加到ContentPane上面 2.Applet的调度时通过事件调度线程进行调度的,而并非浏览器调度。由于Applet的特殊性,所以invokeAndWait方法更为推荐,而不是通常在Swing里面的invokeLater方法 .
JTextComponent 1. JTextComponent中间对于一些常用的操作,Java已经有API支持:     JMenu edit = new JMenu("Edit"); Action cutAction = getActionByName(DefaultEditorKit.cutAction); cutAction.putValue(Action.NAME, "Cut"); edit.add(cutAction);     3.关于Action中间的InMap和ActionMap操作如下:本例中由于采用的是ActionMap中间默认的 ...
Global site tag (gtag.js) - Google Analytics