您的位置:首页 > 职场人生

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

2014-12-20 15:11 357 查看
------- 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)角色:包装了相关的算法或行为。

模板方法模式:

我的模板方法里面设定好执行的逻辑,然后其中的各个小的操作可以放到子类中去实现,事先确定好算法。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: