大话设计模式一

一:简单工厂模式

    定义一个抽象类;然后定义若干继承抽象类的具体类;再简历简单工厂,里面包含实例化每个具体类的方法;最后客户端传具体调用那个类的标识,再用工厂去实例化具体的类,通过多态返回父类的方式来实现。

//抽象类
abstract class Test{
    method();
}
//实现类A
class TestA extends Test{
    method(){
        System.out.pring("A");
    }
}
//实现类B
class TestA extends Test{
    method(){
        System.out.pring("A");
    }
}
//简单工厂
class Factory{
    creatTest(){
        swich(){
        case "A"
        new TestA();
        case"B"
        new TestB();
        }
}
}
//客户端
Test test =
Factory.creatTest("A");
test.method();

}}


二:策略模式

    跟简单工厂差不多,定义一个抽象类;然后定义若干继承抽象类的具体类;再创建一个Context上下文类来维护对抽象类的引用(通过构造方法引入继承了抽象类的具体类),并且根据具体类调用他的方法,最后客户端需要实例化Context对象以及实例化具体类

class Context{
    Test test;
    public Context(Test test){
    this.test = test;
    }

    contextMethod(){
    text.method();
    }
}
//客户端
Context context;
context = new Context(new TestA());
context.contextMethod();

三:策略模式跟简单工厂结合

     跟策略模式不同的是,修改了客户端以及Context上下文类,把具体类的实例化在上下文中进行,客户端传调用哪个具体类的标识,上下文再去具体实例化,这样做的好处就是客户端只要实例化上下文对象,做到了与具体类的解耦

class Context{
    Test test;
    public Context(String type){
        switch(){
        case""{new TestA();test = testA}
        case""{new TestB();test = testB}
        }
    }

    contextMethod(){
    text.method();
    }
}
//客户端
Context context;
context = new Context(type);
context.contextMethod();

设计原则:多用组合,少用继承

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值