[新增功能](master): 更新了一些设计模式的代码及一些博客内容的收集整理
parent
019731de62
commit
3f631e0949
Binary file not shown.
After Width: | Height: | Size: 154 KiB |
@ -1,5 +0,0 @@
|
||||
package com.baiye.design.behavioral.interpreter;
|
||||
|
||||
public interface Interpreter {
|
||||
int interpret();
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.chainofresponsibility;
|
||||
package com.baiye.design.pattern.behavioral.chainofresponsibility;
|
||||
|
||||
public abstract class Approver {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.chainofresponsibility;
|
||||
package com.baiye.design.pattern.behavioral.chainofresponsibility;
|
||||
|
||||
|
||||
public class ArticleApprover extends Approver{
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.chainofresponsibility;
|
||||
package com.baiye.design.pattern.behavioral.chainofresponsibility;
|
||||
|
||||
public class Course {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.chainofresponsibility;
|
||||
package com.baiye.design.pattern.behavioral.chainofresponsibility;
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.chainofresponsibility;
|
||||
package com.baiye.design.pattern.behavioral.chainofresponsibility;
|
||||
|
||||
public class VideoApprover extends Approver{
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.interpreter;
|
||||
package com.baiye.design.pattern.behavioral.interpreter;
|
||||
|
||||
public class AddInterpreter implements Interpreter {
|
||||
|
@ -0,0 +1,5 @@
|
||||
package com.baiye.design.pattern.behavioral.interpreter;
|
||||
|
||||
public interface Interpreter {
|
||||
int interpret();
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.interpreter;
|
||||
package com.baiye.design.pattern.behavioral.interpreter;
|
||||
|
||||
public class MultiInterpreter implements Interpreter{
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.interpreter;
|
||||
package com.baiye.design.pattern.behavioral.interpreter;
|
||||
|
||||
import java.util.Stack;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.interpreter;
|
||||
package com.baiye.design.pattern.behavioral.interpreter;
|
||||
|
||||
public class NumberInterpreter implements Interpreter{
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.interpreter;
|
||||
package com.baiye.design.pattern.behavioral.interpreter;
|
||||
|
||||
public class OpratorUtil {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.interpreter;
|
||||
package com.baiye.design.pattern.behavioral.interpreter;
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.iterator;
|
||||
package com.baiye.design.pattern.behavioral.iterator;
|
||||
|
||||
public class Course {
|
||||
private String name;
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.iterator;
|
||||
package com.baiye.design.pattern.behavioral.iterator;
|
||||
|
||||
public interface CourseAggregate {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.iterator;
|
||||
package com.baiye.design.pattern.behavioral.iterator;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.iterator;
|
||||
package com.baiye.design.pattern.behavioral.iterator;
|
||||
|
||||
public interface CourseIterator {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.iterator;
|
||||
package com.baiye.design.pattern.behavioral.iterator;
|
||||
|
||||
import java.util.List;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.iterator;
|
||||
package com.baiye.design.pattern.behavioral.iterator;
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.mediator;
|
||||
package com.baiye.design.pattern.behavioral.mediator;
|
||||
|
||||
import java.util.Date;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.mediator;
|
||||
package com.baiye.design.pattern.behavioral.mediator;
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.mediator;
|
||||
package com.baiye.design.pattern.behavioral.mediator;
|
||||
|
||||
public class User {
|
||||
private String name;
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.memento;
|
||||
package com.baiye.design.pattern.behavioral.memento;
|
||||
|
||||
public class Article {
|
||||
private String title;
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.memento;
|
||||
package com.baiye.design.pattern.behavioral.memento;
|
||||
|
||||
/**
|
||||
* 快照类
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.memento;
|
||||
package com.baiye.design.pattern.behavioral.memento;
|
||||
|
||||
import java.util.Stack;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.memento;
|
||||
package com.baiye.design.pattern.behavioral.memento;
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.observer;
|
||||
package com.baiye.design.pattern.behavioral.observer;
|
||||
|
||||
import java.util.Observable;
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.observer;
|
||||
package com.baiye.design.pattern.behavioral.observer;
|
||||
|
||||
public class Question {
|
||||
private String userName;
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.observer;
|
||||
package com.baiye.design.pattern.behavioral.observer;
|
||||
|
||||
import java.util.Observable;
|
||||
import java.util.Observer;
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.observer;
|
||||
package com.baiye.design.pattern.behavioral.observer;
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.state;
|
||||
package com.baiye.design.pattern.behavioral.state;
|
||||
|
||||
public class CourseVideoContext {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.state;
|
||||
package com.baiye.design.pattern.behavioral.state;
|
||||
|
||||
public abstract class CourseVideoState {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.state;
|
||||
package com.baiye.design.pattern.behavioral.state;
|
||||
|
||||
|
||||
/**
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.state;
|
||||
package com.baiye.design.pattern.behavioral.state;
|
||||
|
||||
public class PlayState extends CourseVideoState{
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.state;
|
||||
package com.baiye.design.pattern.behavioral.state;
|
||||
|
||||
public class SpeedState extends CourseVideoState{
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.state;
|
||||
package com.baiye.design.pattern.behavioral.state;
|
||||
|
||||
public class StopState extends CourseVideoState{
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.state;
|
||||
package com.baiye.design.pattern.behavioral.state;
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.strategy;
|
||||
package com.baiye.design.pattern.behavioral.strategy;
|
||||
|
||||
public class EmptyPromotionStrategy implements PromotionStrategy{
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.strategy;
|
||||
package com.baiye.design.pattern.behavioral.strategy;
|
||||
|
||||
public class FanxianPromotionStrategy implements PromotionStrategy {
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.strategy;
|
||||
package com.baiye.design.pattern.behavioral.strategy;
|
||||
|
||||
public class LIjianPromotionStrategy implements PromotionStrategy{
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.strategy;
|
||||
package com.baiye.design.pattern.behavioral.strategy;
|
||||
|
||||
public class ManjianPromotionStrategy implements PromotionStrategy{
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.strategy;
|
||||
package com.baiye.design.pattern.behavioral.strategy;
|
||||
|
||||
public class PromotionActivity {
|
||||
private PromotionStrategy promotionStrategy;
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.strategy;
|
||||
package com.baiye.design.pattern.behavioral.strategy;
|
||||
|
||||
public interface PromotionStrategy {
|
||||
void doPromotion();
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.strategy;
|
||||
package com.baiye.design.pattern.behavioral.strategy;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.strategy;
|
||||
package com.baiye.design.pattern.behavioral.strategy;
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.templatemethod;
|
||||
package com.baiye.design.pattern.behavioral.templatemethod;
|
||||
|
||||
public abstract class ACourse {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.templatemethod;
|
||||
package com.baiye.design.pattern.behavioral.templatemethod;
|
||||
|
||||
public class DesignPatternCourse extends ACourse{
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.templatemethod;
|
||||
package com.baiye.design.pattern.behavioral.templatemethod;
|
||||
|
||||
public class FECourse extends ACourse{
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.templatemethod;
|
||||
package com.baiye.design.pattern.behavioral.templatemethod;
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.visitor;
|
||||
package com.baiye.design.pattern.behavioral.visitor;
|
||||
|
||||
public class CodingCourse extends Course{
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.visitor;
|
||||
package com.baiye.design.pattern.behavioral.visitor;
|
||||
|
||||
public abstract class Course {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.visitor;
|
||||
package com.baiye.design.pattern.behavioral.visitor;
|
||||
|
||||
public class FreeCourse extends Course{
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.visitor;
|
||||
package com.baiye.design.pattern.behavioral.visitor;
|
||||
|
||||
public interface IVisitor {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.visitor;
|
||||
package com.baiye.design.pattern.behavioral.visitor;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.behavioral.visitor;
|
||||
package com.baiye.design.pattern.behavioral.visitor;
|
||||
|
||||
public class Visitor implements IVisitor{
|
||||
|
@ -0,0 +1,34 @@
|
||||
package com.baiye.design.pattern.creational.singleton.lazy;
|
||||
|
||||
public class LazyDoubleCheckSingleton {
|
||||
// 使用 volatile 来防止指令重排序
|
||||
private volatile static LazyDoubleCheckSingleton lazyDoubleCheckSingleton = null;
|
||||
|
||||
/**
|
||||
* 私有构造器
|
||||
*/
|
||||
private LazyDoubleCheckSingleton() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 线程不安全 -> 加快锁
|
||||
*/
|
||||
public static LazyDoubleCheckSingleton getInstance() {
|
||||
if (null == lazyDoubleCheckSingleton) {
|
||||
// 锁定的是单例的类
|
||||
synchronized (LazyDoubleCheckSingleton.class) {
|
||||
if (null == lazyDoubleCheckSingleton) {
|
||||
// 1. 分配内存给这个对象
|
||||
// 2. 初始化对象
|
||||
// 3. 设置 lazyDoubleCheckSingleton 指向刚分配的内存地址
|
||||
|
||||
// fixme 在 2 3 时候可能被重排序 intra-thread semantics 的说明知道 2-3 互换位置不会改变程序的执行结果,允许重排序可以加快程序的执行性能
|
||||
lazyDoubleCheckSingleton = new LazyDoubleCheckSingleton();
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
return lazyDoubleCheckSingleton;
|
||||
}
|
||||
}
|
@ -0,0 +1,27 @@
|
||||
package com.baiye.design.pattern.creational.singleton.lazy;
|
||||
|
||||
/**
|
||||
* 懒汉式单例模式
|
||||
*/
|
||||
public class LazySingleton {
|
||||
private static LazySingleton lazySingleton = null;
|
||||
|
||||
/**
|
||||
* 私有构造器
|
||||
*/
|
||||
private LazySingleton() {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 线程不安全 -> 加快锁
|
||||
*/
|
||||
public static LazySingleton getInstance() {
|
||||
synchronized (LazySingleton.class){
|
||||
if (null == lazySingleton) {
|
||||
lazySingleton = new LazySingleton();
|
||||
}
|
||||
}
|
||||
return lazySingleton;
|
||||
}
|
||||
}
|
@ -0,0 +1,9 @@
|
||||
package com.baiye.design.pattern.creational.singleton.lazy;
|
||||
|
||||
public class T implements Runnable{
|
||||
@Override
|
||||
public void run() {
|
||||
LazySingleton lazySingleton = LazySingleton.getInstance();
|
||||
System.out.println(Thread.currentThread().getName() + " " + lazySingleton);
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.baiye.design.pattern.creational.singleton.lazy;
|
||||
|
||||
public class Test {
|
||||
|
||||
public static void main(String[] args) {
|
||||
Thread t1 = new Thread(new T());
|
||||
Thread t2 = new Thread(new T());
|
||||
t1.start();
|
||||
t2.start();
|
||||
System.out.println("program end");
|
||||
}
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.adapter.objectadapter;
|
||||
package com.baiye.design.pattern.structural.adapter.clazzadapter;
|
||||
|
||||
public class Adaptee {
|
||||
public void adapteeRequest(){
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.adapter.clazzadapter;
|
||||
package com.baiye.design.pattern.structural.adapter.clazzadapter;
|
||||
|
||||
/**
|
||||
* 适配器 把Adaptee的方法适配给Target接口
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.adapter.clazzadapter;
|
||||
package com.baiye.design.pattern.structural.adapter.clazzadapter;
|
||||
|
||||
public class ConcreteTarget implements Target{
|
||||
@Override
|
@ -0,0 +1,5 @@
|
||||
package com.baiye.design.pattern.structural.adapter.clazzadapter;
|
||||
|
||||
public interface Target {
|
||||
void request();
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.adapter.clazzadapter;
|
||||
package com.baiye.design.pattern.structural.adapter.clazzadapter;
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.adapter.clazzadapter;
|
||||
package com.baiye.design.pattern.structural.adapter.objectadapter;
|
||||
|
||||
public class Adaptee {
|
||||
public void adapteeRequest(){
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.adapter.objectadapter;
|
||||
package com.baiye.design.pattern.structural.adapter.objectadapter;
|
||||
|
||||
public class Adapter implements Target{
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.adapter.objectadapter;
|
||||
package com.baiye.design.pattern.structural.adapter.objectadapter;
|
||||
|
||||
|
||||
public class ConcreteTarget implements Target{
|
@ -0,0 +1,5 @@
|
||||
package com.baiye.design.pattern.structural.adapter.objectadapter;
|
||||
|
||||
public interface Target {
|
||||
void request();
|
||||
}
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.adapter.objectadapter;
|
||||
package com.baiye.design.pattern.structural.adapter.objectadapter;
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.bridge;
|
||||
package com.baiye.design.pattern.structural.bridge;
|
||||
|
||||
public class ABCBank extends Bank{
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.bridge;
|
||||
package com.baiye.design.pattern.structural.bridge;
|
||||
|
||||
public interface Account {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.bridge;
|
||||
package com.baiye.design.pattern.structural.bridge;
|
||||
|
||||
public abstract class Bank {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.bridge;
|
||||
package com.baiye.design.pattern.structural.bridge;
|
||||
|
||||
public class DepositAccount implements Account{
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.bridge;
|
||||
package com.baiye.design.pattern.structural.bridge;
|
||||
|
||||
public class ICBCBank extends Bank{
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.bridge;
|
||||
package com.baiye.design.pattern.structural.bridge;
|
||||
|
||||
public class SavingAccount implements Account{
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.bridge;
|
||||
package com.baiye.design.pattern.structural.bridge;
|
||||
|
||||
public class Test {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.composite;
|
||||
package com.baiye.design.pattern.structural.composite;
|
||||
|
||||
public abstract class CatalogComponent {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.composite;
|
||||
package com.baiye.design.pattern.structural.composite;
|
||||
|
||||
public class Course extends CatalogComponent{
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.composite;
|
||||
package com.baiye.design.pattern.structural.composite;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.composite;
|
||||
package com.baiye.design.pattern.structural.composite;
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.decorator.v1;
|
||||
package com.baiye.design.pattern.structural.decorator.v1;
|
||||
|
||||
public class Battercake {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.decorator.v1;
|
||||
package com.baiye.design.pattern.structural.decorator.v1;
|
||||
|
||||
public class BattercakeWithEgg extends Battercake{
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.decorator.v1;
|
||||
package com.baiye.design.pattern.structural.decorator.v1;
|
||||
|
||||
public class BattercakeWithEggSausage extends BattercakeWithEgg{
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.decorator.v1;
|
||||
package com.baiye.design.pattern.structural.decorator.v1;
|
||||
|
||||
public class Test {
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.decorator.v2;
|
||||
package com.baiye.design.pattern.structural.decorator.v2;
|
||||
|
||||
public abstract class ABattercake {
|
||||
protected abstract String getDesc();
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.decorator.v2;
|
||||
package com.baiye.design.pattern.structural.decorator.v2;
|
||||
|
||||
/**
|
||||
* @author Administrator
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.decorator.v2;
|
||||
package com.baiye.design.pattern.structural.decorator.v2;
|
||||
|
||||
/**
|
||||
* 装饰者类的第二种形式 对原装饰者进行修改,扩展到更多的方法
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.decorator.v2;
|
||||
package com.baiye.design.pattern.structural.decorator.v2;
|
||||
|
||||
public class Battercake extends ABattercake{
|
||||
@Override
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.decorator.v2;
|
||||
package com.baiye.design.pattern.structural.decorator.v2;
|
||||
|
||||
public class EggDecorator extends AbstractDecorator{
|
||||
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.decorator.v2;
|
||||
package com.baiye.design.pattern.structural.decorator.v2;
|
||||
|
||||
public class SausageDecorator extends AbstractDecorator{
|
||||
public SausageDecorator(ABattercake aBattercake) {
|
@ -1,4 +1,4 @@
|
||||
package com.baiye.design.structural.decorator.v2;
|
||||
package com.baiye.design.pattern.structural.decorator.v2;
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
@ -0,0 +1,21 @@
|
||||
package com.baiye.design.pattern.structural.facade;
|
||||
|
||||
public class GiftExchangeService {
|
||||
// 注入子系统服务
|
||||
private QualifyService qualifyService = new QualifyService();
|
||||
private PointsPaymentService pointsPaymentService = new PointsPaymentService();
|
||||
private ShippingService shippingService = new ShippingService();
|
||||
|
||||
|
||||
public void giftExchange(PointsGift pointsGift) {
|
||||
if (qualifyService.isAvailable(pointsGift)) {
|
||||
// 资格校验通过
|
||||
if (pointsPaymentService.pay(pointsGift)) {
|
||||
// 如果支付积分成功
|
||||
String shippingOrderNo = shippingService.shipGift(pointsGift);
|
||||
System.out.println("物流系统下单成功,订单号是: " + shippingOrderNo);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
package com.baiye.design.pattern.structural.facade;
|
||||
|
||||
public class PointsGift {
|
||||
private String name;
|
||||
|
||||
public PointsGift(String name) {
|
||||
this.name = name;
|
||||
}
|
||||
|
||||
public String getName() {
|
||||
return name;
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package com.baiye.design.pattern.structural.facade;
|
||||
|
||||
public class PointsPaymentService {
|
||||
|
||||
public boolean pay(PointsGift pointsGift) {
|
||||
// 扣减积分
|
||||
System.out.println("支付" + pointsGift.getName() + "积分成功");
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,12 @@
|
||||
package com.baiye.design.pattern.structural.facade;
|
||||
|
||||
/**
|
||||
* 子系统
|
||||
*/
|
||||
public class QualifyService {
|
||||
|
||||
public boolean isAvailable(PointsGift pointsGift) {
|
||||
System.out.println("校验" + pointsGift.getName() + "积分兑换资格通过,库存通过");
|
||||
return true;
|
||||
}
|
||||
}
|
@ -0,0 +1,10 @@
|
||||
package com.baiye.design.pattern.structural.facade;
|
||||
|
||||
public class ShippingService {
|
||||
public String shipGift(PointsGift pointsGift) {
|
||||
// 物流系统的对接逻辑
|
||||
System.out.println(pointsGift.getName() + "进入物流系统");
|
||||
String shippingOrderNo = "666";
|
||||
return shippingOrderNo;
|
||||
}
|
||||
}
|
@ -0,0 +1,14 @@
|
||||
package com.baiye.design.pattern.structural.facade;
|
||||
|
||||
public class Test {
|
||||
public static void main(String[] args) {
|
||||
PointsGift t = new PointsGift("T");
|
||||
GiftExchangeService giftExchangeService = new GiftExchangeService();
|
||||
|
||||
// giftExchangeService.setQualifyService(new QualifyService());
|
||||
// giftExchangeService.setPointsPaymentService(new PointsPaymentService());
|
||||
// giftExchangeService.setShippingService(new ShippingService());
|
||||
|
||||
giftExchangeService.giftExchange(t);
|
||||
}
|
||||
}
|
@ -0,0 +1,5 @@
|
||||
package com.baiye.design.pattern.structural.flyweight;
|
||||
|
||||
public interface Employee {
|
||||
void reprot();
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue