
设计模式
安達と島村
学习记录用,可能有错误的地方
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
HeadFirst设计模式-状态模式
意图:允许对象在内部状态发生改变时改变它的行为,对象看起来好像修改了它的类。 主要解决:对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。 何时使用:代码中包含大量与对象状态有关的条件语句。 如何解决:将各种具体的状态类抽象出来。 关键代码:通常命令模式的接口中只有一个方法。而状态模式的接口中有一个或者多个方法。而且,状态模式的实现类的方法,一般返回值,或者是改变实例变...原创 2020-04-06 17:29:00 · 229 阅读 · 0 评论 -
HeadFirst设计模式-迭代器模式和组合模式
什么是迭代器模式? 让用户通过特定的接口访问容器的数据,不需要了解容器内部的数据结构。 比如menu里有早餐的Array和完成的ArrayList,遍历时需要用分别用遍历数组和ArrayList(遍历两次),且如果增加甜品的HashMap时需要修改menu的代码。 可以让数组,ArrayList和HashMap等实现迭代器接口,在menu里设置迭代器的数组或list,通过迭代器遍历一次即可(可简写...原创 2020-03-26 13:09:54 · 239 阅读 · 0 评论 -
HeadFirst设计模式-模板方法模式
设置泡咖啡和泡茶两个类,步骤如下: 放水 放咖啡/茶 步骤1是共有的。可以设置一个抽象类,实现方法1,定义方法2并由子类实现。 public abstract class PrepareDrink { void putWater(){System.out.println("putWater");}; abstract void putContent(); } public ...原创 2020-03-26 11:09:26 · 215 阅读 · 0 评论 -
HeadFirst设计模式-外观模式
作用是简化接口,比如打开电脑,电脑内部需要很多操作,但通过提供一个很简单的接口,按下开关能开机了。 public Class putElephantIntoFridge { Elephant elephant; Fridge fridge; void open(){ fridge.open(); } void put(){ e...原创 2020-03-26 10:43:42 · 112 阅读 · 0 评论 -
HeadFirst设计模式-适配器模式
适配器模式用来连接两个接口/类,类似插座转换头 public interface Dog { void call(); void run(); } public interface Fish { void call(); void swim(); } public class BigFish implements Fish{ @Override ...原创 2020-03-26 10:28:54 · 139 阅读 · 0 评论 -
HeadFirst设计模式-命令模式
为了简单没做任何异常处理。 可以实现任务队列等需求。 public interface Command { void execute(); void undo(); } public class Light { private String name; public Light(String name) {this.name = name;} public...原创 2020-03-23 22:02:37 · 137 阅读 · 0 评论 -
HeadFirst设计模式-单例模式
//饿汉式单例:在定义开始,便实例化自己。可能出现初始化自己但不被使用的情况 public class A { private A(){}; private static A a=new A(); public static A getA(){ return a; } } //懒汉式单例:在第一次调用时实例化自己。需要考虑线程安全问题,效率低 pu...原创 2020-03-22 22:39:34 · 218 阅读 · 0 评论 -
HeadFirst设计模式-工厂模式
把创建对象的代码(容易被修改)封装起来 public interface Coffee { String description(); } public interface CoffeeFactory { Coffee getCoffee(String name); } public class CappuccinoCream implements Coffee { @...原创 2020-03-22 13:35:15 · 138 阅读 · 0 评论 -
HeadFirst设计模式-装饰者模式
装饰完后类型不变 public interface Coffee { int cost(); String description(); } public class Cappuccino implements Coffee { @Override public int cost() { return 200; } @Overri...原创 2020-03-21 22:21:57 · 115 阅读 · 0 评论 -
HeadFirst设计模式-观察者模式
1个主题对应多个观察者 主题发送变化时通知所有观察者 可以动态添加删除观察者 public interface Animal { void call(); } public interface RoomGetable { void getRoom(); } import java.util.HashSet; public class House implements S...原创 2020-03-21 17:44:38 · 165 阅读 · 0 评论 -
HeadFirst设计模式-策略模式
public interface Callable { void call(); } import org.junit.Test; public class TTT { @Test public void ttt(){ Callable c=new Callable() { @Override public...原创 2020-03-21 16:57:25 · 109 阅读 · 0 评论