黑马程序员java自学总结之--模式

来源:互联网 发布:数据挖掘 毕业论文 编辑:程序博客网 时间:2024/03/29 01:31

------- android培训、java培训、期待与您交流! ----------

装饰者模式:

当想要对已有的对象进行功能增强时,
可以定义类,将已有对象传入,基于已有的功能,并提供加强功能。
那么自定义的该类称为装饰类。

装饰类通常会通过构造方法接收被装饰的对象。
并基于被装饰的对象的功能,提供更强的功能。

class Person{public void chifan(){System.out.println("吃饭");}}class SuperPerson {private Person p ;SuperPerson(Person p){this.p = p;}public void superChifan(){System.out.println("开胃酒");p.chifan();System.out.println("甜点");System.out.println("来一根");}}class  PersonDemo{public static void main(String[] args) {Person p = new Person();//p.chifan();SuperPerson sp = new SuperPerson(p);sp.superChifan();}}

在java中的缓冲区的流的类,使用的就是装饰者模式的思想。

单例设计模式:

最先接触是老师讲的饿汉式和懒汉式:

这个类的设计思想:只可以产生一个类的对象,这个类中封装好构造函数,并且这个类可以返回这个实例的对象,我们windows的回收站都是单例设计模式的例子

 //饿汉式:        public class Singleton{            private static Singleton singleton = new Singleton ();            private Singleton (){}            public Singleton getInstance(){return singletion;}       }      //懒汉式:       public class Singleton{            private static Singleton singleton = null;            public static synchronized synchronized getInstance(){                 if(singleton==null){                     singleton = new Singleton();                 }                return singleton;            }       } 
比较:
饿汉式是线程安全的,在类创建的同时就已经创建好一个静态的对象供系统使用,以后不在改变
懒汉式如果在创建实例对象时不加上synchronized则会导致对对象的访问不是线程安全的
推荐使用第一种 

策略模式:

策略模式定义

策略模式属于对象的行为模式。其用意是针对一组算法,将每一个算法封装到具有共同接口的独立的类中,从而使得它们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。

引进策略模式
策略模式是对算法的包装,是把使用算法的责任和算法本身分割开,委派给不同的对象管理。策略模式通常把一个系列的算法包装到一系列的策略类里面,作为一个抽象策略类的子类。用一句话来说,就是:准备一组算法,并将每一个算法封装起来,使得它们可以相互交换。策略模式的简略图如下图所示。

策略模式的结构
策略又称作政策模式。策略模式的实例结构如下图所示:

这个模式涉及到的三个角色:
环境(Context)角色:持有一个Strategy类的引用。
抽象策略(Strategy)角色:这是一个抽象角色,通常由一个接口或抽象类实现。此角色给出所以的具体策略类所需的接口。
具体策略(ConcreteStrategy)角色:包装了相关的算法或行为。

模板方法模式:

我的模板方法里面设定好执行的逻辑,然后其中的各个小的操作可以放到子类中去实现,事先确定好算法。

0 0