Skip to content
Open
2 changes: 1 addition & 1 deletion DesignPatternProject/DesignPatternProject.iml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<content url="file://$MODULE_DIR$">
<sourceFolder url="file://$MODULE_DIR$/src" isTestSource="false" />
</content>
<orderEntry type="inheritedJdk" />
<orderEntry type="jdk" jdkName="11" jdkType="JavaSDK" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
</module>
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo;
/*
* created by zhujitao
* 2019/10/22
* A类优惠卷,可以享受6.8折优惠
* */

public interface Coupon {

final String type = "";
final double discountPercentage = 0;

public double returnDiscount();

public String getType();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo;

/*
* created by zhujitao
* 2019/10/22
* A类优惠卷,可以享受6.8折优惠
* */

public class CouponA implements Coupon {

final String type = "A";
final double discountPercentage = 0.68;

@Override
public String getType() {
return type;
}

@Override
public double returnDiscount() {
return discountPercentage;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo;/*
* created by zhujitao
* 2019/10/22
* B类优惠卷,可以享受8.8折优惠
* */

public class CouponB implements Coupon {

final String type = "B";
final double discountPercentage = 0.88;

@Override
public String getType() {
return type;
}

@Override
public double returnDiscount() {
return discountPercentage;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
package edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo;/*
* created by zhujitao
* 2019/10/22
* C类优惠卷,可以享受9.8折优惠
* */

public class CouponC implements Coupon {

final String type = "A";
final double discountPercentage = 0.98;

@Override
public String getType() {
return type;
}

@Override
public double returnDiscount() {
return discountPercentage;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo;

/*
* created by zhujitao
* 2019/10/22
* N类优惠卷,就是没有优惠卷,不享受任何优惠
* */

public class CouponN implements Coupon {

final String type = "N";
final double discountPercentage = 0.0;

@Override
public String getType() {
return type;
}

@Override
public double returnDiscount() {
return discountPercentage;
}
}

Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
package edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo;/*
* created by zhujitao
* 2019/10/22
* 优惠卷适配器的接口
* */

public interface Discount {

public double getDiscount();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo;/*
* created by zhujitao
* 2019/10/22
* 优惠卷的适配器,通过输入的字符串返回不同的折扣比例
* */

public class DiscountAdapter implements Discount {

Coupon coupon = null;
private String couponType = "";

public DiscountAdapter(String couponType){
this.couponType = couponType;
}

@Override
public double getDiscount() {
if(couponType.equals("A")){
coupon = new CouponA();
}else if(couponType.equals("B")){
coupon = new CouponB();
}else if(couponType.equals("C")){
coupon = new CouponC();
}
return coupon.returnDiscount();
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package edu.tongji.designpattern.ClassDesign.Business.AdaptorDemo;

/*
* created by zhujitao
* 2019/10/22
* 实际得到具体折扣的类,通过输入的字符串返回不同的折扣比例
* */

public class RealDiscount implements Discount {

DiscountAdapter discountAdapter = null;
String couponType = "";


public RealDiscount(String couponType){
this.couponType = couponType;
}

@Override
public double getDiscount() {
discountAdapter = new DiscountAdapter(couponType);
return discountAdapter.getDiscount();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package edu.tongji.designpattern.ClassDesign.Business.Builder;

import edu.tongji.designpattern.ClassDesign.Tools.Combo;
import edu.tongji.designpattern.ClassDesign.Tools.Dish;



public abstract class ComboBuilder {
protected Combo combo=new Combo();
public abstract void buildDishA();
public abstract void buildDishB();
public abstract void buildDrink();
public abstract void buildPrice();
public Combo getResult(){
return combo;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package edu.tongji.designpattern.ClassDesign.Business.Builder;

public class ConcreteComboBuilderA extends ComboBuilder {
@Override
public void buildDishA() {
combo.setDishA("蒸鱼");
}

@Override
public void buildDishB() {
combo.setDishB("生菜沙拉");

}
@Override
public void buildDrink() {
combo.setDrink("可乐");
}

@Override
public void buildPrice() {
combo.setPrice("40");
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package edu.tongji.designpattern.ClassDesign.Business.Builder;

public class ConcreteComboBuilderB extends ComboBuilder{
@Override
public void buildDishA() {
combo.setDishA("蒸肉");
}

@Override
public void buildDishB() {
combo.setDishB("番茄沙拉");

}
@Override
public void buildDrink() {
combo.setDrink("雪碧");
}

@Override
public void buildPrice() {
combo.setPrice("41");
}
}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package edu.tongji.designpattern.ClassDesign.Business.Builder;

import edu.tongji.designpattern.ClassDesign.Tools.Combo;

public class Director {
private ComboBuilder comboBuilder;
public Director(ComboBuilder comboBuilder){
this.comboBuilder=comboBuilder;
}

public Combo construct(){
System.out.println("套餐内容:");
comboBuilder.buildDishA();
comboBuilder.buildDishB();
comboBuilder.buildDrink();
comboBuilder.buildPrice();
return comboBuilder.getResult();
}

}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,76 @@
package edu.tongji.designpattern.ClassDesign.Business.ChainofResponsibilityDemo;

/*
* created by zhujitao
* 2019/10/22
* 责任链模式里面的投诉类
* */


import edu.tongji.designpattern.ClassDesign.Person.Employee;
import edu.tongji.designpattern.ClassDesign.Person.Manager;
import edu.tongji.designpattern.ClassDesign.Person.Waiter;

public class Complaint {

Manager manager;
Waiter waiter;

Employee employee;

public int level;

public Complaint(int level, Manager manager, Waiter waiter){
this.level = level;
this.manager =manager;
this.waiter = waiter;
}

//责任链模式,将投诉通过类型进行分析,如果是低级投诉就
//使用服务员来解决,高级投诉使用经理来解决
//假设投诉登记为1时服务员前来处理,否则的话是由经理来处理
//最终默认投诉会被处理
public void setCurHanlder(){
if (level==1){
employee = waiter;
}else {
employee = manager;
}
}

public void settleProblem(){
employee.settleComplaint();
}

public Employee getEmployee() {
return employee;
}

public int getLevel() {
return level;
}

public Manager getManager() {
return manager;
}

public Waiter getWaiter() {
return waiter;
}

public void setEmployee(Employee employee) {
this.employee = employee;
}

public void setLevel(int level) {
this.level = level;
}

public void setManager(Manager manager) {
this.manager = manager;
}

public void setWaiter(Waiter waiter) {
this.waiter = waiter;
}
}
Loading