设计一个股民炒股票的代码
代码版本0
UML类
具体股票、国债、房产类
class Stock1{
//卖股票
public void sell(){
System.out.println("股票1卖出");
}
//买股票
public void buy(){
System.out.println("股票1买入");
}
}
class Stock2{
//卖股票
public void sell(){
System.out.println("股票1卖出");
}
//买股票
public void buy(){
System.out.println("股票1买入");
}
}
class NationDebt1{
//卖国债
public void sell(){
System.out.println("国债1卖出");
}
//买国债
public void buy(){
System.out.println("国债1买入");
}
}
class Realty1{
//卖房地产
public void sell(){
System.out.println("房地产1卖出");
}
//买房地产
public void buy(){
System.out.println("房地产1买入");
}
}
客户端
Stock1 stock1 = new Stock1();
Stock2 stock2 = new Stock2();
NationDebt1 nationDebt1 = new NationDebt1();
Realty1 realty1 = new Realty1();
stock1.buy();
stock2.buy();
nationDebt1.buy();
realty1.buy();
stock1.sell();
stock2.sell();
nationDebt1.sell();
realty1.sell();
代码版本0
需求变更:现在增加一个基金类
UML类
基金类
public class Fund {
Stock1 stock1;
Stock2 stock2;
NationalDebt1 nd1;
Realty rt1;
public Fund(){
stock1 = new Stock1();
stock2 = new Stock2();
nd1 = new NationalDebt1();
rt1 = new Realty1();
}
public void buyFund(){
stock1.buy();
stock2.buy();
nd1.buy();
rt1.buy();
}
public void sellFund(){
stock1.sell();
stock2.sell();
nd1.sell();
rt1.sell();
}
//基金很多买入卖出操作,持仓比例等
//无需提前告知用户
}
客户端
Fund fund1 = new Fund();
//基金购买
fund1.buyFund();
//基金赎回
fund1.sellFund();
外观模式
外观模式,为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。
案例代码
UML类
四个子系统
public class SubSystemOne {
public void methodOne(){
System.out.println("子系统方法一");
}
}
public class SubSystemTwo {
public void methodTwo(){
System.out.println("子系统方法二");
}
}
public class SubSystemThree {
public void methodThree(){
System.out.println("子系统方法三");
}
}
public class SubSystemFour {
public void methodFour(){
System.out.println("子系统方法四");
}
}
外观类
//外观类
//它需要了解所有子系统的方法和属性,进行组合以备外界调用
public class Facade {
SubSystemOne one;
SubSystemTwo two;
SubSystemThree three;
SubSystemFour four;
public Facade(){
one = new SubSystemOne();
two = new SubSystemTwo();
three = new SubSystemThree();
four = new SubSystemFour();
}
public void methodA(){
one.methodOne();
two.methodTwo();
three.methodThree();
four.methodFour();
}
public void methodB(){
two.methodTwo();
three.methodThree();
}
}
客户端
Facade facade = new Facade();
facade.methodA();
facade.methodB();
使用场景
第在设计初期阶段,应该要有意识地将不同的两个层分离,比如经典的三层架构,就需要考虑在数据访问层和业务逻辑层、业务逻辑层和表示层的层与层之间建立外观Facade,这样可以为复杂的子系统提供一个简单的接口,使得耦合大大降低。第在开发阶段,子系统往往因为不断的重构演化而变得越来越复杂,增加外观Facade可以提供一个简单的接口,减少它们之间的依赖。第在维护一个遗留的大型系统时,可能这个系统已经非常难以维护和扩展了,可以为新系统开发一个外观Facade类,来提供设计粗糙或高度复杂的遗留代码的比较清晰简单的接口,让新系统与Facade对象交互,Facade与遗留代码交互所有复杂的工作。
文章为作者独立观点,不代表 股票程序化软件自动交易接口观点