> 文章列表 > 常用设计模式

常用设计模式

常用设计模式

里氏替换原则:子类可以扩展父类的功能,但是不要更改父类的已经实现的方法子类对父类的方法尽量不要重写和重载。(我们可以采用final的手段强制来遵循)创建型模式
单例模式:维护线程数据安全
懒汉式
public class Test{
饿汉式
private static final Test test=new Test();
//构造私有化
private Test(){}
public static Test getInstance(){
return test;}
}饿汉式
public class Test{
饿汉式
private static Test test=null;
//构造私有化
private Test(){}
public static synchronized Test getInstance(){if (test==null) test=new Test();return test;}
}工厂模式:隐藏创建细节,实现对象的生产
public class ConnectionFactory{
public Connection create(String connectionName){
switch(connectionName){case "redis":return new RedisConnection;cases "mysql":return new MysqlConnection;default :return null;}}
}结构型模式
装饰着模式:注意.装饰者模式和静态代理模式实现一样,但是装饰者模式侧重的是类的假强,静态代理侧重的是方法的加强
interface Persion{void said();
}
class  Men implements Persion{@Overridepublic void said() {System.out.println("man said");}
}
class OldMen implements Persion {private Persion persion;public OldMen(Persion persion){this.persion=persion;}@Overridepublic void said() {persion.said();System.out.println("oldMan said");}
}代理模式(反射):
静态代理(编译后不可更改对象的行为):静态代理和装饰者模式是一样的实现方式,可以完成同样的事情,但是代理模式侧重方法的加强,而装饰者模式侧重类的加强
动态代理(动态的更改对象的行为属性)jdk动态代理cglib动态代理模式行为型模式
观察者模式:
interface Observer {//观察谁abstract void update(BeObserver beObserver);
}class BeObserver {List<Observer> list = new ArrayList<>();private int statues;public void setList(int statues) {this.statues = statues;notifyAllObserver();}public void notifyAllObserver() {list.forEach(s -> s.update(this));}
}