------- 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)角色:包装了相关的算法或行为。
模板方法模式:
我的模板方法里面设定好执行的逻辑,然后其中的各个小的操作可以放到子类中去实现,事先确定好算法。