From 91e645e5ad92236e6190ddcf71c0ffa6d33b1215 Mon Sep 17 00:00:00 2001 From: "carl.kong" Date: Tue, 5 Jun 2018 09:28:07 +0800 Subject: [PATCH 1/3] =?UTF-8?q?=E5=88=A0=E9=99=A4eclipse=E9=85=8D=E7=BD=AE?= =?UTF-8?q?=E6=96=87=E4=BB=B6=EF=BC=8Cformate=E4=B8=80=E4=B8=AA=E7=B1=BB?= =?UTF-8?q?=E7=9A=84=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .classpath | 6 - .project | 17 --- .settings/org.eclipse.jdt.core.prefs | 11 -- .../abstractfactory/AbstractFactory.java | 119 ++++++++++-------- 4 files changed, 66 insertions(+), 87 deletions(-) delete mode 100644 .classpath delete mode 100644 .project delete mode 100644 .settings/org.eclipse.jdt.core.prefs diff --git a/.classpath b/.classpath deleted file mode 100644 index 63b7e89..0000000 --- a/.classpath +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/.project b/.project deleted file mode 100644 index 1ea1adf..0000000 --- a/.project +++ /dev/null @@ -1,17 +0,0 @@ - - - JavaDesignPattern - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs deleted file mode 100644 index bb35fa0..0000000 --- a/.settings/org.eclipse.jdt.core.prefs +++ /dev/null @@ -1,11 +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.codegen.unusedLocal=preserve -org.eclipse.jdt.core.compiler.compliance=1.8 -org.eclipse.jdt.core.compiler.debug.lineNumber=generate -org.eclipse.jdt.core.compiler.debug.localVariable=generate -org.eclipse.jdt.core.compiler.debug.sourceFile=generate -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/src/com/anxpp/designpattern/abstractfactory/AbstractFactory.java b/src/com/anxpp/designpattern/abstractfactory/AbstractFactory.java index 75dc28c..6c2a889 100644 --- a/src/com/anxpp/designpattern/abstractfactory/AbstractFactory.java +++ b/src/com/anxpp/designpattern/abstractfactory/AbstractFactory.java @@ -1,72 +1,85 @@ package com.anxpp.designpattern.abstractfactory; + //抽象工厂模式 public class AbstractFactory { - public static void main(String args[]){ - IFactory bigfactory = new BigFactory(); - IFactory smallfactory = new BigFactory(); - bigfactory.producePhone().run(); - bigfactory.produceHeadset().play(); - smallfactory.producePhone().run(); - smallfactory.produceHeadset().play(); - } + public static void main(String args[]) { + IFactory bigfactory = new BigFactory(); + IFactory smallfactory = new BigFactory(); + bigfactory.producePhone().run(); + bigfactory.produceHeadset().play(); + smallfactory.producePhone().run(); + smallfactory.produceHeadset().play(); + } } + //抽象产品*2 -interface Headset{ - void play(); +interface Headset { + void play(); } + //抽象产品 -interface MeizuPhone{ - void run(); +interface MeizuPhone { + void run(); } + //具体产品*2*2 -class PRO5 implements MeizuPhone{ - @Override - public void run() { - System.out.println("我是一台PRO5"); - } +class PRO5 implements MeizuPhone { + @Override + public void run() { + System.out.println("我是一台PRO5"); + } } -class MX5 implements MeizuPhone{ - @Override - public void run() { - System.out.println("我是一台MX5"); - } + +class MX5 implements MeizuPhone { + @Override + public void run() { + System.out.println("我是一台MX5"); + } } -class EP21 implements Headset{ - @Override - public void play() { - System.out.println("我是一副EP21"); - } + +class EP21 implements Headset { + @Override + public void play() { + System.out.println("我是一副EP21"); + } } -class EP30 implements Headset{ - @Override - public void play() { - System.out.println("我是一台EP30"); - } + +class EP30 implements Headset { + @Override + public void play() { + System.out.println("我是一台EP30"); + } } + //抽象工厂 -interface IFactory{ - MeizuPhone producePhone(); - Headset produceHeadset(); +interface IFactory { + MeizuPhone producePhone(); + + Headset produceHeadset(); } + //具体工厂*2 -class BigFactory implements IFactory{ - @Override - public MeizuPhone producePhone() { - return new PRO5(); - } - @Override - public Headset produceHeadset() { - return new EP30(); - } +class BigFactory implements IFactory { + @Override + public MeizuPhone producePhone() { + return new PRO5(); + } + + @Override + public Headset produceHeadset() { + return new EP30(); + } } + //具体工厂*2 -class SmallFactory implements IFactory{ - @Override - public MeizuPhone producePhone() { - return new MX5(); - } - @Override - public Headset produceHeadset() { - return new EP21(); - } +class SmallFactory implements IFactory { + @Override + public MeizuPhone producePhone() { + return new MX5(); + } + + @Override + public Headset produceHeadset() { + return new EP21(); + } } \ No newline at end of file From 05b73c2f36363af4bb736d545a875a27a0387ba5 Mon Sep 17 00:00:00 2001 From: "carl.kong" Date: Tue, 5 Jun 2018 09:36:22 +0800 Subject: [PATCH 2/3] format code --- .../abstractfactory/AbstractFactory.java | 168 +++++++++--------- 1 file changed, 84 insertions(+), 84 deletions(-) diff --git a/src/com/anxpp/designpattern/abstractfactory/AbstractFactory.java b/src/com/anxpp/designpattern/abstractfactory/AbstractFactory.java index 6c2a889..24cbfea 100644 --- a/src/com/anxpp/designpattern/abstractfactory/AbstractFactory.java +++ b/src/com/anxpp/designpattern/abstractfactory/AbstractFactory.java @@ -1,85 +1,85 @@ -package com.anxpp.designpattern.abstractfactory; - -//抽象工厂模式 -public class AbstractFactory { - public static void main(String args[]) { - IFactory bigfactory = new BigFactory(); - IFactory smallfactory = new BigFactory(); - bigfactory.producePhone().run(); - bigfactory.produceHeadset().play(); - smallfactory.producePhone().run(); - smallfactory.produceHeadset().play(); - } -} - -//抽象产品*2 -interface Headset { - void play(); -} - -//抽象产品 -interface MeizuPhone { - void run(); -} - -//具体产品*2*2 -class PRO5 implements MeizuPhone { - @Override - public void run() { - System.out.println("我是一台PRO5"); - } -} - -class MX5 implements MeizuPhone { - @Override - public void run() { - System.out.println("我是一台MX5"); - } -} - -class EP21 implements Headset { - @Override - public void play() { - System.out.println("我是一副EP21"); - } -} - -class EP30 implements Headset { - @Override - public void play() { - System.out.println("我是一台EP30"); - } -} - -//抽象工厂 -interface IFactory { - MeizuPhone producePhone(); - - Headset produceHeadset(); -} - -//具体工厂*2 -class BigFactory implements IFactory { - @Override - public MeizuPhone producePhone() { - return new PRO5(); - } - - @Override - public Headset produceHeadset() { - return new EP30(); - } -} - -//具体工厂*2 -class SmallFactory implements IFactory { - @Override - public MeizuPhone producePhone() { - return new MX5(); - } - - @Override - public Headset produceHeadset() { - return new EP21(); - } +package com.anxpp.designpattern.abstractfactory; + +//抽象工厂模式 +public class AbstractFactory { + public static void main(String args[]) { + IFactory bigfactory = new BigFactory(); + IFactory smallfactory = new BigFactory(); + bigfactory.producePhone().run(); + bigfactory.produceHeadset().play(); + smallfactory.producePhone().run(); + smallfactory.produceHeadset().play(); + } +} + +//抽象产品*2 +interface Headset { + void play(); +} + +//抽象产品 +interface MeizuPhone { + void run(); +} + +//具体产品*2*2 +class PRO5 implements MeizuPhone { + @Override + public void run() { + System.out.println("我是一台PRO5"); + } +} + +class MX5 implements MeizuPhone { + @Override + public void run() { + System.out.println("我是一台MX5"); + } +} + +class EP21 implements Headset { + @Override + public void play() { + System.out.println("我是一副EP21"); + } +} + +class EP30 implements Headset { + @Override + public void play() { + System.out.println("我是一台EP30"); + } +} + +//抽象工厂 +interface IFactory { + MeizuPhone producePhone(); + + Headset produceHeadset(); +} + +//具体工厂*2 +class BigFactory implements IFactory { + @Override + public MeizuPhone producePhone() { + return new PRO5(); + } + + @Override + public Headset produceHeadset() { + return new EP30(); + } +} + +//具体工厂*2 +class SmallFactory implements IFactory { + @Override + public MeizuPhone producePhone() { + return new MX5(); + } + + @Override + public Headset produceHeadset() { + return new EP21(); + } } \ No newline at end of file From 9ed5e51ed94b8288cd431683993a908fac484ede Mon Sep 17 00:00:00 2001 From: "carl.kong" Date: Tue, 5 Jun 2018 10:41:23 +0800 Subject: [PATCH 3/3] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E6=9E=84=E9=80=A0?= =?UTF-8?q?=E5=99=A8=E6=A8=A1=E5=BC=8F=E4=BE=8B=E5=AD=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designpattern/builder/DateBuilder1.java | 17 --- .../designpattern/builder/DateBuilder2.java | 17 --- .../anxpp/designpattern/builder/Derector.java | 12 -- .../designpattern/builder/IDateBuilder.java | 6 - .../anxpp/designpattern/builder/MyDate.java | 5 - src/com/anxpp/designpattern/builder/Test.java | 125 ++++++++++++++++++ .../anxpp/designpattern/builder/TestUse.java | 11 -- 7 files changed, 125 insertions(+), 68 deletions(-) delete mode 100644 src/com/anxpp/designpattern/builder/DateBuilder1.java delete mode 100644 src/com/anxpp/designpattern/builder/DateBuilder2.java delete mode 100644 src/com/anxpp/designpattern/builder/Derector.java delete mode 100644 src/com/anxpp/designpattern/builder/IDateBuilder.java delete mode 100644 src/com/anxpp/designpattern/builder/MyDate.java create mode 100644 src/com/anxpp/designpattern/builder/Test.java delete mode 100644 src/com/anxpp/designpattern/builder/TestUse.java diff --git a/src/com/anxpp/designpattern/builder/DateBuilder1.java b/src/com/anxpp/designpattern/builder/DateBuilder1.java deleted file mode 100644 index 5ff5088..0000000 --- a/src/com/anxpp/designpattern/builder/DateBuilder1.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.anxpp.designpattern.builder; -//具体生成器 -public class DateBuilder1 implements IDateBuilder{ - private MyDate myDate; - public DateBuilder1(MyDate myDate){ - this.myDate = myDate; - } - @Override - public IDateBuilder buildDate(int y, int m, int d) { - myDate.date = y+"-"+m+"-"+d; - return this; - } - @Override - public String date() { - return myDate.date; - } -} diff --git a/src/com/anxpp/designpattern/builder/DateBuilder2.java b/src/com/anxpp/designpattern/builder/DateBuilder2.java deleted file mode 100644 index f32d4e7..0000000 --- a/src/com/anxpp/designpattern/builder/DateBuilder2.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.anxpp.designpattern.builder; -//具体生成器 -public class DateBuilder2 implements IDateBuilder{ - private MyDate myDate; - public DateBuilder2(MyDate myDate){ - this.myDate = myDate; - } - @Override - public IDateBuilder buildDate(int y, int m, int d) { - myDate.date = y+" "+m+" "+d; - return this; - } - @Override - public String date() { - return myDate.date; - } -} diff --git a/src/com/anxpp/designpattern/builder/Derector.java b/src/com/anxpp/designpattern/builder/Derector.java deleted file mode 100644 index b665d11..0000000 --- a/src/com/anxpp/designpattern/builder/Derector.java +++ /dev/null @@ -1,12 +0,0 @@ -package com.anxpp.designpattern.builder; -//指挥者 -public class Derector { - private IDateBuilder builder; - public Derector(IDateBuilder builder){ - this.builder = builder; - } - public String getDate(int y,int m,int d){ - builder.buildDate(y, m, d); - return builder.date(); - } -} diff --git a/src/com/anxpp/designpattern/builder/IDateBuilder.java b/src/com/anxpp/designpattern/builder/IDateBuilder.java deleted file mode 100644 index bc08fbf..0000000 --- a/src/com/anxpp/designpattern/builder/IDateBuilder.java +++ /dev/null @@ -1,6 +0,0 @@ -package com.anxpp.designpattern.builder; -//抽象生成器 -public interface IDateBuilder { - IDateBuilder buildDate(int y,int m,int d); - String date(); -} diff --git a/src/com/anxpp/designpattern/builder/MyDate.java b/src/com/anxpp/designpattern/builder/MyDate.java deleted file mode 100644 index 75d656c..0000000 --- a/src/com/anxpp/designpattern/builder/MyDate.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.anxpp.designpattern.builder; -//产品 -public class MyDate { - String date; -} diff --git a/src/com/anxpp/designpattern/builder/Test.java b/src/com/anxpp/designpattern/builder/Test.java new file mode 100644 index 0000000..bd42473 --- /dev/null +++ b/src/com/anxpp/designpattern/builder/Test.java @@ -0,0 +1,125 @@ +package com.anxpp.designpattern.builder; + +/** + * ģʽʵǰĹ setterнųĹ࣬ÿδʱֱʹöӦĹ࣬ + * Ϳ԰ԤƵIJõ¹ĶȥˣʡȥʹsetterȥһһԵĹʵģʽ; + */ +public class Test { + //ʵ + public static void main(String[] args) { + Waiter waiter = new Waiter(); + //ʵ1 + PizzaBuilder hawaiian_pizzabuilder = new HawaiianPizzaBuilder(); + waiter.setPizzaBuilder(hawaiian_pizzabuilder); + waiter.constructPizza(); + Pizza pizza = waiter.getPizza(); + System.out.println(pizza.toString()); + //ʵ2 + PizzaBuilder spicy_pizzabuilder = new SpicyPizzaBuilder(); + waiter.setPizzaBuilder(spicy_pizzabuilder); + waiter.constructPizza(); + pizza = waiter.getPizza(); + System.out.println(pizza.toString()); + } +} + +//Pizza +class Pizza { + // + private String dough = ""; + // + private String sauce = ""; + // + private String topping = ""; + + public void setDough(String dough) { + this.dough = dough; + } + + public void setSauce(String sauce) { + this.sauce = sauce; + } + + public void setTopping(String topping) { + this.topping = topping; + } + + @Override + public String toString() { + return "Pizza{" + + "dough='" + dough + '\'' + + ", sauce='" + sauce + '\'' + + ", topping='" + topping + '\'' + + '}'; + } +} + + +//pizza +abstract class PizzaBuilder { + protected Pizza pizza; + + public Pizza getPizza() { + return pizza; + } + + public void createNewPizzaProduct() { + pizza = new Pizza(); + } + + public abstract void buildDough(); + + public abstract void buildSauce(); + + public abstract void buildTopping(); +} + +//pizza +class HawaiianPizzaBuilder extends PizzaBuilder { + public void buildDough() { + pizza.setDough("cross"); + } + + public void buildSauce() { + pizza.setSauce("mild"); + } + + public void buildTopping() { + pizza.setTopping("ham+pineapple"); + } +} + + +class SpicyPizzaBuilder extends PizzaBuilder { + public void buildDough() { + pizza.setDough("pan baked"); + } + + public void buildSauce() { + pizza.setSauce("hot"); + } + + public void buildTopping() { + pizza.setTopping("pepperoni+salami"); + } +} + +//pizza +class Waiter { + private PizzaBuilder pizzaBuilder; + + public void setPizzaBuilder(PizzaBuilder pb) { + pizzaBuilder = pb; + } + + public Pizza getPizza() { + return pizzaBuilder.getPizza(); + } + + public void constructPizza() { + pizzaBuilder.createNewPizzaProduct(); + pizzaBuilder.buildDough(); + pizzaBuilder.buildSauce(); + pizzaBuilder.buildTopping(); + } +} diff --git a/src/com/anxpp/designpattern/builder/TestUse.java b/src/com/anxpp/designpattern/builder/TestUse.java deleted file mode 100644 index d9290c3..0000000 --- a/src/com/anxpp/designpattern/builder/TestUse.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.anxpp.designpattern.builder; -public class TestUse { - public static void main(String args[]){ - MyDate date = new MyDate(); - IDateBuilder builder; - builder = new DateBuilder1(date).buildDate(2066, 3, 5); - System.out.println(builder.date()); - builder = new DateBuilder2(date).buildDate(2066, 3, 5); - System.out.println(builder.date()); - } -} \ No newline at end of file