2020年9月26日星期六

Java设计模式之002

策略模式(Strategy Pattern) :定义了一系列的算法, 将每一种算法封装起来并可以相互替换使用, 策略模式让算法独立于使用它的客户应用而独立变化。 

OO设计原则:

1.面向接口编程(面向抽象编程);

2.封装变化;

3.多用组合, 少用继承 ;

 

当一个功能有多种实现方式时, 我们应该使用策略设计模式, 把功能抽象出来, 然后用不同的子类各自提供实现类, 在真正使用时, 根据业务情况来动态替换 

把可变的行为抽象出来, 这样的好处是这些行为可以在真正使用时相互替换。

 

策略模式的实际应用:

1.数据库操作封装;

2.微信扫码登录注册绑定操作 ;

举例说明:将数据保存到不同的地方,比如文件、网络、数据库中。

a.创建接口,以供不同方式去实现

public interface ISave {
public void save(String data);
}

b.以供不同方式去实现接口中的方法

public class FileSave implements ISave{
@Override
public void save(String data){
System.out.println("把数据["+data+"]存储到文件中");
}
}
public class DBSave implements ISave{
@Override
public void save(String data) {
System.out.println("把数据["+data+"]存储到数据库中");
}
}

public class NetSave implements ISave{
 @Override
public void save(String data) {
System.out.println("把数据["+data+"]存储到网络中");
}
}

c.通过类来组合接口和接口的实现类,自上而下地调用具体不同对象的相同方法,来实现多态性

public class DataContext {
private ISave iSave; //DataContext只依赖接口,不依赖具体的实现---->面向接口编程

public DataContext(ISave iSave){
this.iSave = iSave;
}

public void save1(String data){
iSave.save(data);  //通过接口来调用具体对象的sava方法(父类调子类方法原理)
}
}

测试对比:

public class Test {
public static void main(String[] args) throws Exception{
//1 依赖了具体类
//1 ISave iSave = new FileSave();
//1 iSave.save("苦战Java一辈子!!");

//2 依赖接口(抽象类),具体的对象创建还要通过代码来改动
//2 DataContext dc = new DataContext(new FileSave());
//2 dc.save1("苦战Java一辈子!!");

//3 依赖接口(抽象类),具体的对象类脱离到属性文件中(config.properties),而不是放在代码中
//让软件更加利于维护(提高程序的可扩张性),牺牲性能
Properties prop = new Properties(); //属性文件工具类
prop.load(Thread.currentThread().getContextClassLoader()
.getResourceAsStream("config.properties"));
//属性文件中(config.properties): context.save=NetSave
String className = prop.getProperty("context.save");
ISave iSave = (ISave) Class.forName(className).newInstance();

DataContext dc = new DataContext(iSave);
dc.save1("苦战Java一辈子!!");
}
}


 

原文转载:http://www.shaoqun.com/a/477671.html

环球易购:https://www.ikjzd.com/w/1034

宝贝格子:https://www.ikjzd.com/w/1322

王惟:https://www.ikjzd.com/w/1744


策略模式(StrategyPattern):定义了一系列的算法,将每一种算法封装起来并可以相互替换使用,策略模式让算法独立于使用它的客户应用而独立变化。OO设计原则:1.面向接口编程(面向抽象编程);2.封装变化;3.多用组合,少用继承;当一个功能有多种实现方式时,我们应该使用策略设计模式,把功能抽象出来,然后用不同的子类各自提供实现类,在真正使用时,根据业务情况来动态替换把可变的行为抽象出来,这
etoro:https://www.ikjzd.com/w/1402
贝贝官网:https://www.ikjzd.com/w/1321
蓄势沉淀,厚积薄发--跨境电商"两会"告诉你转型之路,敢问路在何方?:https://www.kjyunke.com/courses/496
"全球供需匹配新方式,跨境电商带来新机遇"圆桌对话圆满结束!:https://www.ikjzd.com/home/110132
2019印尼十大电商平台排名,中国"互联网三巨头"布局印尼市场!:https://www.ikjzd.com/home/18098

没有评论:

发表评论

跨境电商资讯:外贸宣传平台有哪些(出口的

现在很多做外贸的人都非常关注 外贸企业怎么推广 ,而现在推广的途径和平台有很多,企业如果都做,成本和时间精力是一个问题,而且并不是所有的推广渠道都是有用的。今天云程网络就来为大家盘点几个有效的外贸推广渠道。 一、海外社交媒体营销 Facebook,领英等海外社交媒体营销在近几年得...