• Welcome to the world's largest Chinese hacker forum

    Welcome to the world's largest Chinese hacker forum, our forum registration is open! You can now register for technical communication with us, this is a free and open to the world of the BBS, we founded the purpose for the study of network security, please don't release business of black/grey, or on the BBS posts, to seek help hacker if violations, we will permanently frozen your IP and account, thank you for your cooperation. Hacker attack and defense cracking or network Security

    business please click here: Creation Security  From CNHACKTEAM

Recommended Posts

定义

一个模式定义了一系列的算法,并且封装了每一个算法,这样它们就可以互相替换。

使用场景

当你写代码发现一个操作有很多种实现方式,需要根据不同情况使用if-else分支结构来确定使用哪种实现方式时,就要考虑这个模式了。

共同实现

正常写代码的话,平时应该也是这样。首先要保证功能正确实现,然后再慢慢重构。设计模式都是在不断重构中应用的。王会调用goToTianJinEye()方法,根据自己的实际情况选择一定的出行方式。

公共类流量计算器{

public int gototianjeneye(String way,int distance) {

int traffic fee=0;

开关(路){

案例'总线' :

如果(距离10)

流量费=4;

其他

流量费=6;

打破;

案例“滴滴”:

如果(距离3)

流量费=8;

其他

流量费=8(距离-3)* 3;

打破;

案例'共享Bicyle':

流量费=2;

打破;

默认:

打破;

}

返还流量费;

}

}

那么这种写法有什么缺点呢?第一,各种出行方式的交通费用的计算方法写在TrafficFeeCalculator类中,承担了更多的责任,违背了单一责任原则。第二:如果王突然想自己开车,需要修改goToTianJinEye的方法。这违背了开闭原则。

策略模式实现

公共接口计算策略{

int calculateTrafficeFee(int distance);

}

类总线实现计算策略{

@覆盖

public int calculatedtrafficefee(int distance){

返回Math.min(10,距离);

}

}

高德类实现计算策略{

@覆盖

public int calculatedtrafficefee(int distance){

return Math.max(距离,20);

}

}

类SharedDibai实现CalculateStrategy {

@覆盖

public int calculatedtrafficefee(int distance){

return 2;

}

}

类别流量计算{

public int gotianan men(calculate strategy calculate strategy,int distance) {

返回calculate strategy . calculate traffic efee(距离);

}

公共静态void main(String[] args) {

trafficefecalculate trafficefecalculate=new trafficefecalculate();

int I=trafficefeecalculate . gotiananmen(new Bus(),10);

system . out . println(' bus ' I);

int i1=trafficefeecalculate . gotiananmen(新高德(),10);

System.out.println('打高德' i1);

}

}

优缺点

优点:减少了算法类的职责,使每个算法可以独立变化,互相替代。而且便于添加新的算法,减少了对原系统的入侵,最终增强了程序的可扩展性和可维护性。

缺点:增加了所有设计模式的通病和类别,程序局部变得更加复杂。

总结

你觉得所有关于设计模式的文章都有一个特点吗?使用设计模式使程序看起来比不使用设计模式更复杂,而不是更简单。这是因为每篇文章中的示例都是没有实际意义的示例代码。实际情况是程序非常复杂,需要使用设计模式。一个大规模的程序是不断迭代的,一开始肯定不会是那样的。程序员每天接到一个开发任务,不要想太多。我应该为此使用什么设计模式?先实现功能,再回头看看自己有没有遵循面向对象编程的六大原则。如果你还没想好怎么改进,那么设计模式就出现了。

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now