我有一个应用程序,它本质上是第三方API的包装器.该应用程序不使用数据库,只存储单个cookie,这是API所需的会话ID.
API是一个允许用户使用的购物系统
-login/register/edit profile/logout
- 买的商品
-做捐献
-成为会员
API有50个左右的方法,我的应用程序需要连接到这些方法.示例API调用是addItemToBasket(),addDonation(),GetUserDetails()等.
我试图弄清楚我的应用程序中应该是什么类.这是我到目前为止:
类
1)APIManager()类 包含与第三方API中公开的方法一对一匹配的方法,并提供与远程API服务器建立连接的机制.因此用户将通过登录
APIManager->loginUser($sessionKey, $uid, $pwd);
Run Code Online (Sandbox Code Playgroud)
并且远程API会将用户设置为已登录.如果需要,我的应用程序可以通过调用API来检查任何会话密钥的登录状态:
APIManager->isLoggedIn($sessionKey);
Run Code Online (Sandbox Code Playgroud)
2)User()类 这包含在处理API调用(如Register或Login)之前包含所需业务逻辑的方法.一个示例方法是:
function login($_POST) {
//perform sanity checks, apply business rules etc.
//if certain conditions are met, we may pass in a promo code, $pc
APIManager->loginUser($sessionkey, $_POST['uid'], $_POST['pwd'], $pc);
}
Run Code Online (Sandbox Code Playgroud)
我意识到我可能只是从登录页面调用APIManager,而不是拥有User类本身,但我觉得因为在我们实际调用API的loginUser()方法之前需要运行一些业务逻辑,所以感觉有权在User类中处理.我很想知道人们对此的看法.
3)篮子()类
篮子是在第三方API中管理的,所以我的应用程序的作用是进行适当的API调用以将新项目添加到购物篮,删除项目,查看购物篮等.我的应用程序对篮子一无所知,直到从中检索数据API,也不能通过API进行任何更改.同样,将这种相关逻辑分组到Basket类中是合适的.前端网页可能会调用以下内容:
Basket->addItem(23);
Run Code Online (Sandbox Code Playgroud)
而这个Basket类中的addItem()方法看起来像:
addItem($itemID) {
//perform checks, apply business rules e.g. if user is eligible for discount
APIManager->addToCart($itemID, $discount);
}
Run Code Online (Sandbox Code Playgroud)
其中addToCart()是我们调用来处理项目的第三方API方法.
4)捐赠()类
这允许用户进行捐赠.捐赠出现在篮子里,可以从篮子里取出.我想到只是在Basket类中添加一个addDonate()方法而不用担心有Donation对象,但是......(见下文)
5)会员资格()类
...会员资格实际上是一种捐赠!该API将捐赠进入某个帐户作为1年会员资格,而不是简单的捐赠.我们无法更改第三方API的逻辑/行为. …
假设我Closeable使用请求范围通过Guice注入了一个对象:
@Provides @RequestScoped
public MyCloseableResource providesMyCloseableResource(){
return new MyCloseableResourceImpl();
}
Run Code Online (Sandbox Code Playgroud)
是否有可能连接一个清理方法,该方法close()在范围存在时自动调用我的资源,而不需要求助于自定义范围实现?
查看Guice wiki上的自定义范围实现指南,它显示应该创建和清理范围,如下所示:
/**
* Runs {@code runnable} in batch scope.
*/
public void scopeRunnable(Runnable runnable) {
scope.enter();
try {
// explicitly seed some seed objects...
scope.seed(Key.get(SomeObject.class), someObject);
// create and access scoped objects
runnable.run();
} finally {
scope.exit();
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法finally在内置范围(特别是会话和请求范围)中连接一些自定义清理代码.
如果不可能,可能会出现阻碍这种自动清理的问题吗?
我已经找到了在servlet容器中实现相同效果的方法,通过实现Filter来为每个请求创建和清理资源,这很有效,但我很好奇它是否可能与纯Guice一起使用.
我正在寻找system()C++程序返回-1 的原因和案例.我处于这样一种情况,它在一个不在另一个类中的类中工作正常.
我需要一个快速包含(元素)的数据结构(最好是O(1)).它也允许我按照它的顺序迭代它.HashSet满足前者,Vector满足后者.在java.util中存在这样的事情吗?
如果我在unittest.TestCase中有一个断言,如下所示:
self.assertTrue( person.age == 42, "age incorrect")
Run Code Online (Sandbox Code Playgroud)
当它失败时,它会给出"年龄不正确"的消息.我还希望看到的是预期值和实际值.这样做的最佳方法是什么?是单位测试可以做的吗?
编辑 我想看到类似的东西:
"年龄不正确:预期值42实际值39"
我的应用程序执行一些背景数据收集,我正在添加对用户网络首选项的支持,例如执行后台更新和数据漫游.我已经有以下检查:
ConnectivityManager cm = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
if(cm.getBackgroundDataSetting()) {
...
NetworkInfo networkInfo = cm.getActiveNetworkInfo();
if (networkInfo != null && networkInfo.isAvailable() && networkInfo.isConnected()) {
Run Code Online (Sandbox Code Playgroud)
使用清单中的必填项:
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
Run Code Online (Sandbox Code Playgroud)
这一切看起来都很好,但我想知道我是否应该检查其他任何东西?我担心检查数据漫游,但是文档声明networkInfo.isAvailable()为我检查这个.那么我需要为网络设置实施任何其他检查吗?我应该注意这个领域还有什么吗?
可能重复:
在.js文件中包含.js文件
如何将js文件包含到另一个js文件中,以便坚持DRY原则并避免重复代码.
我刚刚开始学习java,我有大约8个月的时间.我的主要目标是使用java构建Web应用程序.但是由于有许多可用的Java技术/框架,我很想知道我应该如何使用IDE进行eclipse
我想的路径如下
1)Learn Core Java
2)Project: Build Java Invoicing System with JDBC or mysql to test java knowledge
3)Learn Servlets / JSP to
4)Build small site like simple logon/memberarea/catalogue using servlets/jsp
Run Code Online (Sandbox Code Playgroud)
现在,我真的不知道以下事情在我的道路上的位置以及它们将帮助哪些事情
1)Java EE
2)Spring or spring MVC, what's the difference?
3)Hibernate
4)Wicket
5)Struts
Run Code Online (Sandbox Code Playgroud)
我真的不知道我应该如何学习这些以及可以选择哪些东西.
什么应该是我可以使用这些构建的最终项目,因为如果我从当前阶段看到甚至网站可以使用servlets/jsp构建.那为什么我需要那些其他技术
任何人都可以给出一个可以使用新技术构建而不使用jsp/servlet的项目示例,以便我可以了解为什么需要这些项目?
我必须编写一个简单的程序,使用OpenGL和C#在Windows窗体应用程序中绘制内容?你能给我一些图书馆和/或教程的例子吗?我发现了这个:http://sourceforge.net/projects/csgl/files/CsGL/1.4.1/但它是从2002年开始的.有什么新的吗?
在python中,为什么建议继承我们从类中创建的任何类object,为什么不直接将它作为基类?我注意到一个重要的事情是,__slots__如果我将我的类作为基类(而不是作为类的子类object),则声明不起作用.通过从班级继承我的班级,我还有哪些其他优点/缺点object?
java ×3
python ×2
android ×1
c# ×1
c++ ×1
class ×1
class-design ×1
frameworks ×1
g++ ×1
guice ×1
java-ee ×1
javascript ×1
opengl ×1
php ×1
system ×1
unit-testing ×1
winforms ×1