diff --git a/.gitignore b/.gitignore index 19ee72f..7e96c4e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,32 @@ -.gitignore +# Eclipse +.project +.classpath +.settings/ + +# Maven +target/ +dependency-reduced-pom.xml +pom.xml.versionsBackup +.factorypath + +# Gradle +.gradle/ build/ -.settings/* + +#IDEA +# idea ignore +.idea/ +*.ipr +*.iml +*.iws + +# temp ignore +*.log +*.cache +*.diff +*.patch +*.tmp + +# system ignore +.DS_Store +Thumbs.db \ No newline at end of file diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index 0c68a61..0000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,7 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8 -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.source=1.8 diff --git a/.settings/org.eclipse.wst.common.project.facet.core.xml b/.settings/org.eclipse.wst.common.project.facet.core.xml deleted file mode 100644 index f4ef8aa..0000000 --- a/.settings/org.eclipse.wst.common.project.facet.core.xml +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/src/designpattern/adapter/Adaptee.java b/src/designpattern/adapter/Adaptee.java index f5a8e4b..e53e1a9 100644 --- a/src/designpattern/adapter/Adaptee.java +++ b/src/designpattern/adapter/Adaptee.java @@ -9,7 +9,7 @@ public class Adaptee { public void specificRequest() { - System.out.println("特殊的请求!"); + System.out.println("客户所期待的请求!"); } } diff --git a/src/designpattern/adapter/AdapterClient.java b/src/designpattern/adapter/AdapterClient.java index 4e65e9f..7955269 100644 --- a/src/designpattern/adapter/AdapterClient.java +++ b/src/designpattern/adapter/AdapterClient.java @@ -10,8 +10,9 @@ public class AdapterClient { public static void main(String[] args) { Target target; - +//确保使用的target引用了想要执行的类 target = new Adapter(); target.request(); + target.send(); } } diff --git a/src/designpattern/adapter/Target.java b/src/designpattern/adapter/Target.java index 01b2b2e..d36bd38 100644 --- a/src/designpattern/adapter/Target.java +++ b/src/designpattern/adapter/Target.java @@ -2,12 +2,16 @@ /** * 客户所期待的接口 - * + * 必须可继承才能修改其行为 * @author liu yuning * */ public abstract class Target { public void request() { - System.out.println("普通请求!"); + System.out.println("原本的请求!"); + } + + public void send() { + System.out.println("send!"); } } diff --git a/src/designpattern/bridge/BridgeClient.java b/src/designpattern/bridge/BridgeClient.java index 0c676f5..c06a416 100644 --- a/src/designpattern/bridge/BridgeClient.java +++ b/src/designpattern/bridge/BridgeClient.java @@ -23,7 +23,7 @@ public static void main(String[] args) { // 这样通过使用“组合/聚合复用原则” // 如果继续有AbstractionC ... 或者ConcreteImplemtorC ... - // 只需要扩展类即可,不需要修改现有类,符合“开放-封闭”原则 + // 只需要扩展增加类即可,不需要修改现有类,符合“开放-封闭”原则 } } diff --git a/src/designpattern/builder/BuilderClient.java b/src/designpattern/builder/BuilderClient.java index bdb34f2..c965c3a 100644 --- a/src/designpattern/builder/BuilderClient.java +++ b/src/designpattern/builder/BuilderClient.java @@ -2,7 +2,7 @@ /** * 建造客户端 - * + * 传入建造者,生产出对应类型产品, * @author liu yuning * */ @@ -13,7 +13,9 @@ public static void main(String[] args) { Builder builder1 = new ConcreteBuilder1(); Builder builder2 = new ConcreteBuilder2(); + //建造一个builder1 director.construct(builder1); + //获取建造的产品 Product product1 = builder1.getBuildResult(); product1.show(); diff --git a/src/designpattern/builder/Director.java b/src/designpattern/builder/Director.java index f988925..3881516 100644 --- a/src/designpattern/builder/Director.java +++ b/src/designpattern/builder/Director.java @@ -2,14 +2,13 @@ /** * 指挥者类,用来指挥建造过程 - * - * @author liu yuning * + * @author liu yuning */ public class Director { - + //建造指挥者需要了解建造过程,但不需要知道建造细节。而建造的不一定是对象,可能是实现一个完成的动作 public void construct(Builder builder) { - builder.buildPartA(); - builder.buildPartB(); + builder.buildPartA(); + builder.buildPartB(); } } diff --git a/src/designpattern/command/CommandClient.java b/src/designpattern/command/CommandClient.java index 61ce53f..968a2b5 100644 --- a/src/designpattern/command/CommandClient.java +++ b/src/designpattern/command/CommandClient.java @@ -21,6 +21,7 @@ public static void main(String[] args) { Command command = new ConcreteCommand(recievers); Invoker invoker = new Invoker(); + //统一执行命令 invoker.setCommand(command); invoker.executeCommand(); diff --git a/src/designpattern/command/Reciever.java b/src/designpattern/command/Reciever.java index 45d0d08..4d61a45 100644 --- a/src/designpattern/command/Reciever.java +++ b/src/designpattern/command/Reciever.java @@ -10,6 +10,7 @@ interface Reciever { public void action(); } +//要执行的命令都定义在执行者类中 class RecieverA implements Reciever { @Override diff --git a/src/designpattern/composite/CompositeClient.java b/src/designpattern/composite/CompositeClient.java index 9e3295b..94836aa 100644 --- a/src/designpattern/composite/CompositeClient.java +++ b/src/designpattern/composite/CompositeClient.java @@ -1,7 +1,7 @@ package designpattern.composite; /** - * 客户端。通过Component接口操作组合部件的对象 + * 组合模式客户端。通过Component接口操作组合部件的对象 * * @author liu yuning * diff --git a/src/designpattern/decorator/DecoratorClient.java b/src/designpattern/decorator/DecoratorClient.java index 797165c..4ac7d9e 100644 --- a/src/designpattern/decorator/DecoratorClient.java +++ b/src/designpattern/decorator/DecoratorClient.java @@ -2,6 +2,11 @@ /** * 装饰模式客户端调用代码,装饰的过程更像是层层包装,用前面的对象装饰后面的对象 + * 例子:jdk io中的 + * java.io.BufferedInputStream(InputStream) + * java.io.DataInputStream(InputStream) + * java.io.BufferedOutputStream(OutputStream) + * java.util.zip.ZipOutputStream(OutputStream) * * @author liu yuning * diff --git a/src/designpattern/facade/Facade.java b/src/designpattern/facade/Facade.java index 8cad1cb..4f68ae1 100644 --- a/src/designpattern/facade/Facade.java +++ b/src/designpattern/facade/Facade.java @@ -19,6 +19,7 @@ public Facade() { subSystemFour = new SubSystemFour(); } + //对单独的方法进行组合调用,完成需要的服务 public void methodA() { System.out.println("方法组A:"); diff --git a/src/designpattern/factory/abstraction/Client.java b/src/designpattern/factory/abstraction/Client.java index 41ffec2..31e3fa3 100644 --- a/src/designpattern/factory/abstraction/Client.java +++ b/src/designpattern/factory/abstraction/Client.java @@ -3,7 +3,7 @@ import designpattern.factory.simple.Operation; /** - * 客户端 + * 这三种工厂方法基本逻辑一样,只是获得类的过程不同 * * @author liu yuning * diff --git a/src/designpattern/factory/abstraction/OperationFactory.java b/src/designpattern/factory/abstraction/OperationFactory.java index b13483a..3950fab 100644 --- a/src/designpattern/factory/abstraction/OperationFactory.java +++ b/src/designpattern/factory/abstraction/OperationFactory.java @@ -10,7 +10,7 @@ import designpattern.factory.simple.OperationSub; /** - * 利用反射改造简单工厂模式,去掉分支判断的逻辑 + * 利用反射改造实现简单工厂模式,去掉分支判断的逻辑 * * @author liu yuning * @@ -36,6 +36,7 @@ public static Operation createOperation(String operator) throw new RuntimeException("unsupported operation"); } + //创建好产品对象,根据输入返回相应对象 operation = (Operation) operationClass.newInstance(); return operation; diff --git a/src/designpattern/factory/simple/Calculator.java b/src/designpattern/factory/simple/Calculator.java index a2ebcf8..caa7e57 100644 --- a/src/designpattern/factory/simple/Calculator.java +++ b/src/designpattern/factory/simple/Calculator.java @@ -12,6 +12,7 @@ public static void main(String[] args) { char operator; operator = '+'; + //生产获得对应的操作类 operation = OperationFactory.createOperation(operator); operation.numberA = 1.2; operation.numberB = 2.3; diff --git a/src/designpattern/flyweight/FlyWeightClient.java b/src/designpattern/flyweight/FlyWeightClient.java index 547d26b..115c6c8 100644 --- a/src/designpattern/flyweight/FlyWeightClient.java +++ b/src/designpattern/flyweight/FlyWeightClient.java @@ -1,7 +1,7 @@ package designpattern.flyweight; /** - * 客户端 + * 享元客户端 * * @author liu yuning * diff --git a/src/designpattern/flyweight/FlyWeightFactory.java b/src/designpattern/flyweight/FlyWeightFactory.java index afc235d..be78d87 100644 --- a/src/designpattern/flyweight/FlyWeightFactory.java +++ b/src/designpattern/flyweight/FlyWeightFactory.java @@ -3,7 +3,7 @@ import java.util.HashMap; /** - * 享元工厂 + * 享元工厂 其实就是用map把创建的单例保存起来 * * @author liu yuning * diff --git a/src/designpattern/interpreter/InterpreterClient.java b/src/designpattern/interpreter/InterpreterClient.java index 53d970e..76d535f 100644 --- a/src/designpattern/interpreter/InterpreterClient.java +++ b/src/designpattern/interpreter/InterpreterClient.java @@ -5,6 +5,7 @@ /** * 构建表示该文法定义的语言中一个特定的句子的抽象语法树,调用解释操作 + * 解释器模式主要用于解释文法,每种解释方法都需要创建一个解释类 * * @author liu yuning * diff --git a/src/designpattern/iterator/ConcreteIterator.java b/src/designpattern/iterator/ConcreteIterator.java index 1a2a47c..8cf9f1e 100644 --- a/src/designpattern/iterator/ConcreteIterator.java +++ b/src/designpattern/iterator/ConcreteIterator.java @@ -2,7 +2,7 @@ /** * 具体迭代器类,给出一种具体迭代的实现方式。思考:迭代器表示的是一种迭代的行为,而聚集则是真正要被迭代的数据集合。 - * 之所以要将迭代器和聚集分开,就是为了将行为与数据分开。 可类比Java中Iterator与Iterable的关系进行理解 + * 之所以要将迭代器和聚集分开,就是为了将!行为与数据分开。 可类比Java中Iterator与Iterable的关系进行理解 * * @author liu yuning * diff --git a/src/designpattern/iterator/IteratorClient.java b/src/designpattern/iterator/IteratorClient.java index dccddb9..fe52baa 100644 --- a/src/designpattern/iterator/IteratorClient.java +++ b/src/designpattern/iterator/IteratorClient.java @@ -2,7 +2,7 @@ /** * 迭代器客户端 - * + * 迭代器用于遍历集合,jdk中有集合iterator实现 * @author liu yuning * */ diff --git a/src/designpattern/mediator/Mediator.java b/src/designpattern/mediator/Mediator.java index c97eccb..14267e3 100644 --- a/src/designpattern/mediator/Mediator.java +++ b/src/designpattern/mediator/Mediator.java @@ -2,7 +2,7 @@ /** * 抽象中介者类 - * + * 中介需要知道所有顾客对象,类似于聊天系统服务器 * @author liu yuning * */ diff --git a/src/designpattern/memento/MementoClient.java b/src/designpattern/memento/MementoClient.java index 42e393e..e9bddf8 100644 --- a/src/designpattern/memento/MementoClient.java +++ b/src/designpattern/memento/MementoClient.java @@ -2,6 +2,7 @@ /** * 客户端 + * Originator实现细节应当是封装的,需要通过备忘录恢复状态 * * @author liu yuning * @@ -22,7 +23,7 @@ public static void main(String[] args) { originator.setState("Off"); originator.show(); - // 通过管理者从备忘录中恢复状态 + // !通过管理者从备忘录中恢复状态 originator.recoverMemento(careTaker.getMemento()); originator.show(); }