1、简介 委派模式对外隐藏具体实现细节,将任务委派给具体的实现类,spring mvc的DispatcherServlet就是使用了委派模式,根据不同的路径,来调用具体对应的HandlerAdapter。 例如,一个部门由部门经理,程序员和设计师三个角色,程序员和设计师负责具体的工作,部门经理根据不同的任务来选择程序员或者设计师来执行。 2、建立任务执行者 public interface User { public void work(); } public class Programmer implements User { @Override public void work() { System.out.println("java工程师开始工作"); } } public class Designer implements User { @Override public void work() { System.out.println("架构设计师开始工作"); } } 3、建立任务分发者 public class DepartmentManager { private .... 有更新! 委派模式 程序人生
1、简介 策略模式可以在运行时动态切换类的运行算法策略,将变化的算法策略封装,降低了代码耦合度,只需要根据不同情况更换不同策略即可。 例如:今天是2020-12-24平安夜,今晚去见女票,可以选择送花,也可以选择送苹果,平安夜就是算法使用环境,送花和送苹果就是不同的算法策略。 2、创建算法使用环境 public class ChristmasContext { private ChristmasStrategy christmasStrategy; public ChristmasContext(ChristmasStrategy christmasStrategy){ this.christmasStrategy = christmasStrategy; } public void gift(){ christmasStrategy.gift(); } } 3、创建抽象策略 public interface ChristmasStrategy { public void gift(); } 4、创建具体的策略 public class FlowerStrategy impleme.... 有更新! 策略模式 程序人生
1、简介 装饰器模式可以实现动态的给一个类添加新的职责。当然也可也通过子类来实现这一操作,但是这样的话,子类就会继承父类的方法和属性,当父类的发生改变,会影响到子类。装饰器模式会产生很多子类,后期难以维护。 2、抽象组件 public interface User { public void sayHello(); } 3、具体抽象组件 public class Student implements User { @Override public void sayHello() { System.out.println("我是student"); } } 4、装饰角色 public abstract class UserDecorator implements User { private User user; public UserDecorator(User user){ this.user = user; } @Override public void sayHello() { user.sayHello(); } public abstract void sayGoodBy.... 有更新! 装饰器模式 程序人生
1、简介 原型模式是创建型模式,通过拷贝原型创建新的对象,在重复创建复杂对象占用较多系统资源时,可以考虑使用原型模式。 原型模式使用 clone 能够动态的抽取当前对象运行时的状态并且克隆到新的对象中,新对象就可以在此基础上进行操作而不损坏原有对象;而 new 只能得到一个刚初始化的对象。 2、创建原型 在Java中,需要实现Cloneable接口,并重写Object中的clone方法,如果不实现Cloneable接口,就会抛出CloneNotSupportedException异常 public class User implements Cloneable { private String username; private String sex; public User(){} public User(String userInfo){ String[] userInfos = userInfo.split("-"); this.setUsername(userInfos[0]); this.setSex(userInfos[1]); } public String getUse.... 有更新! 原型模式 程序人生
1、简介 观察者模式定义了一种一对多的依赖关系,当一个对象的状态发生变化,所有依赖于它的对象都能得到通知,其实就是发布/订阅的关系。 2、建立LOL游戏(发布者) LOL游戏中有两个队列,一个普通用户列表,一个VIP用户列表 public class Lol { private List<User> normalUser = new ArrayList<>(); private List<User> vipUser = new ArrayList<>(); /** * 发送给普通玩家的信息 */ private String normalUserMessage; /** * 发送给Vip玩家的信息 */ private String vipUserMessage; /** * 添加一个普通用户 * @param user 用户 */ public void attachNormalUser(User user){ normalUser.add(user); } /** * 添加一个VIP用户 * @param user 用户 */ pu.... 有更新! 观察者 程序人生
1、简述 模板方法是定义一个算法骨架,将特定步骤交给子类处理,这样子类就可以根据自己的需求,重新定义特定步骤。 2、建立一个游戏启动模板 public abstract class GameTemplate { public abstract void init(); public abstract void start(); public void play(){ init(); start(); } } 3、CF public class Cf extends GameTemplate { @Override public void init() { System.out.println("初始化cf环境"); } @Override public void start() { System.out.println("启动cf"); } } 4、LOL public class Lol extends GameTemplate { @Override public void init() { System.out.println("初始化lol环境"); } @Override.... 有更新! 模板方法 程序人生